zoukankan      html  css  js  c++  java
  • 4.3Java封装的细节

    4.3Java封装的细节

    类的属性的处理

    • 一般使用private访问权限---类的属性就是要不给别人使用

    • 提供相应的get/set方法来访问相关属性,这些方法通常是public修饰的,以提供对属性的赋值与读取操作---boolean变量的get方法是is开头!

    • 一些只用于本类的辅助性方法可以用Private修饰,希望其他类调用的方法用public修饰

    实例:

    /**
    * 测试封装和访问修饰符
    * @author Lucifer
    */
    public class Person4 {
       /*
       碰到属性全部私有
        */
       private int id;
       private String name;
       private int age;
       private boolean man;

       //想让别人访问私有的属性就提供相应的set和get方法
       /*
       对name提供set方法,这样外部想去设置name的值直接调用方法
        */
       public void setName(String name){
           this.name = name;
      }

       //设置age
       public void setAge(int age){
           if(age>=0 && age <= 130){
               this.age = age;
          }else {
               System.out.println("Please input real age");
          }
      }
       /*
       高内聚
        */

       public String getName(){
           return this.name;
      }

       public int getAge(){
           return this.age;
      }
    }
    /**
    * 测试封装
    * @author Lucifer
    */
    public class TestEncapsulation {

       private static Person4 p4;

       public static void main(String[] args) {
           Human h = new Human();
    //       age = 13; //不可以对age赋值,因为age被封装起来了。age再其他类里面不可见
           h.name = "Lucifer";
           h.height = 170; //同一个包下的属性可以用

           p4 = new Person4();
           /*
           因为age被四有了访问不到只能通过setAge进行访问---方法进行访问
           通过private把属性变成私有并且暴露一个方法,利用这个方法对外控制
            */
           p4.setAge(-14);
           System.out.println(p4.getAge()); //上面设置了-14设置不进去,默认是0
    //       p4.getName();
      }
    }

    上诉是JavaBean的封装实例,只有简单的封装没有复杂的逻辑判断

    package cn.Lucifer.oo;

    import javax.sound.midi.SysexMessage;

    /**
    * 测试JavaBean封装
    * @author Lucifer
    */
    public class Test2 {
       public static void main(String[] args) {
           Person2 p1 = new Person2();
           p1.setName("Lucifer");
           p1.setAge(-1000);
           System.out.println(p1);

           Person2 p2 = new Person2("James",300);
           System.out.println(p2);
      }
    }

    //写一个类,拥有两个private属性
    class Person2{
       private String name;
       private int age;
       //写一个构造器
       public Person2(){

      }
       //这是个公共的构造器
       public Person2(String name, int age){
           this.name = name;
           //不能this.age直接赋值,因为age被private修饰符修饰了

      }

       //写一个修改name的set方法
       public void setName(String name){
           this.name = name;
      }
       //写一个返回name的get方法
       public String getName(){
           return this.name;
      }
       /*
       注意getName方法名要和前面setName方法里面的形参一致
        */

       //写一个修改age的set方法并且判断年龄是否合法
       public void setAge(int age){
           if(age > 130 || age < 0){
               System.out.println("Please input really age");
          }else {
               this.age = age;
          }
      }
       //写一个返回age的get方法
       public int getAge(){
           return this.age;
      }

       //重写toString
       @Override
       public String toString(){
           return "Person [Name =" + name + ",Age =" + age + "]";
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    opencvsharp BitmapSource图片截取问题
    wpf RenderTargetBitmap保存控件为图片时图片尺寸不对的问题
    c# ??和运算符先后的问题
    wpf 窗口打开后默认设置控件焦点
    win10 requireAdministrator设置开机自启动无效的解决方案
    Gogs webhook钩子 验签 (PHP版本)
    MongoDB管理用户的认证机制
    RocketMQ使用指南及参数详解
    微信公众号h5获取用户openId的方法和步骤
    php中常用的正则表达式函数
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14615181.html
Copyright © 2011-2022 走看看