封装

定义: 

  1.把对象的状态和行为(字段和方法)看成一个统一的整体,将二者存放在一个独立的模块中(类);

  2."信息隐藏", 把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;

封装机制在程序中的体现是:

  把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。

JavaBean规范:

  一个类必须有一个参数为空的构造方法,所有的字段必须使用private修饰;并向外提供getter/setter 若字段的第二个字母是小写的,把第一个字母变成大的,再加上get/set作为前缀;(最常见的) 若第二个字母是大写的,就保持原样再加上get/set;(特殊)

  1 class Person
  2 {
  3     private String name;
  4 
  5     //把字段私有化起来,  private 修饰
  6     //private表示 访问修饰符中的一个,表示私有的意思;
  7     //它的访问权限是  当前定义的类里面,,  类访问权限
  8     private int age;
  9 
 10     private boolean isMan;
 11     /*
 12         一旦我们把某个字段使用private修饰起来之后,外界就不能直接访问了;
 13 
 14         那怎么办呢?
 15             
 16                 为每一个私有化起来的字段提供一对外界可以访问的,getter/setter方法;
 17                     
 18                     getter方法用于获取该字段的值;
 19                         格式:  
 20                                 [非私有修饰符]  字段类型 get字段的名字(首字母大写)()
 21                                 {
 22                                     return 字段名;
 23                                 }
 24 
 25 
 26                     setter方法用于给该字段设置一个值:
 27                         格式:
 28                                 [非私有修饰符] void set字段的名字(首字母大写)(字段类型 变量)
 29                                 {
 30                                     字段 = 变量;
 31                                 }
 32 
 33                     其他的数据类型都是这样的,(getter/setter)
 34 
 35                     boolean:  只有setter方法和 is方法
 36 
 37 
 38             JavaBean:规范
 39 
 40                 Field不是属性?
 41     
 42     */
 43     
 44 
 45         //getter
 46 
 47         public int getAge()
 48         {
 49             return age;//直接访问字段的值
 50         }
 51 
 52         //setter
 53         public void setAge(int a)
 54         {
 55             if(a<=0 || a >130)
 56             {
 57                 System.out.println("亲,数据错误");
 58                 return;//结束方法
 59             }
 60             age = a;//赋值操作    
 61         }
 62         
 63 
 64         public String  getName()//OOXXX这个才叫属性
 65         {
 66             return name;
 67         }
 68         
 69         /**
 70         public void setName(String n)
 71         {
 72             name = n;
 73         }
 74         **/
 75 
 76         private void setName(String n)
 77         {
 78             name = n;
 79         }
 80 
 81     //boolean类型
 82 
 83     public boolean isIsman()
 84     {
 85         return isMan;
 86     }
 87 
 88 
 89     /**
 90     Person(String n, int a)
 91     {
 92         name = n;
 93         age = a;
 94     }
 95     **/
 96 
 97 
 98 
 99     
100     void p()
101     {
102         System.out.println(name +"-->" + age);
103     }
104 
105 }
106 
107 class PrivateDemo
108 {
109     public static void main(String[] args) 
110     {    
111 
112         //问题1: 参数传递问题依然没有解决;
113         //
114         //Person p = new Person("Will",-2);
115 
116         Person p = new Person();
117         //p.age = 12;//PrivateDemo.java:36: 错误: age可以在Person中访问private
118         
119         p.setAge(17);//把17通过setAge方法赋值给age字段
120         //System.out.println(p.age);
121         //p.p();
122 
123         int age = p.getAge();
124         System.out.println(age);
125 
126         //p.setName("坏人");//不能访问
127     }
128 }

 

posted @ 2016-11-23 13:43  chenxiaoq  阅读(193)  评论(0)    收藏  举报