定义:
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 }