1 * @ 面向对象的特征一: 2 * 封装与隐藏 3 * 创建一个类的对象以后,我们可以通过“对象.属性”的方式,对 4 * 对象的属性进行赋值,这里,赋值操作要受到属性的数据类型和存储 5 * 范围的制约,除此之外,没有其它制约条件,但是,实际问题中,我 6 * 们往往需要给属性赋值加入额外的限制条件,这个条件不能再属性声 7 * 明时体现,只能通过方法进行限制条件的添加。如(setLegs()) 8 * 9 * 同时,我们需要避免用户再通过 “对象.属性”的方式对属性进行赋值。 10 * 则需要经属性声明为私有的(private) 11 * --->此时 针对于属性就体现了封装性 12 * 13 * 封装性的体现 14 * 将类的属性(xxx)私有化(private),同时,提供公共的(public)方法来 15 * 获取(getXxx)和设置(setXxx)此属性的值 16 * 17 * 18 * 封装性的体现① 如上 ② 不对外暴露的私有方法 ③单例模式....... 19 * 20 * 21 * 三.封装性的体现,需要权限修饰符来配合。 22 * 1.Java规定的4中权限(从小到大):private 缺省 protected public 23 * 2.4中权限可以用来修饰类及类的内部结构:属性,方法,构造器,内部类 24 * 3.具体的 4中权限都可以修饰类的内部结构 25 * 修饰类的话 只能使用 缺省,public 26 */ 27 public class AnimalTest 28 { 29 public static void main(String[] agrs) 30 { 31 //AnimalTest test = new AnimalTest(); 32 33 Animal animal = new Animal(); 34 animal.name="大黄"; 35 36 animal.setAge(2); 37 //animal.legs = 4; //The field Animal.legs is not visible 38 //animal.eat(); 39 animal.show(); 40 41 //animal.legs=-4; 42 //animal.show(); 43 44 //animal.setLegs(-5); //0 45 //animal.setLegs(5); //0 46 animal.setLegs(6); //6 47 animal.show(); 48 // animal.getAge(); 49 // animal.getLegs(); 50 51 52 53 } 54 } 55 56 57 class Animal 58 { 59 String name; 60 private int age; 61 private int legs; //腿的个数 62 63 //对于属性的设置 64 public void setLegs(int l) 65 { 66 if(l>=0 && l%2==0) 67 { 68 legs = l; 69 } 70 else 71 { 72 legs =0; 73 //抛出一个异常 74 75 } 76 } 77 78 //对于属性的获取 79 public int getLegs() 80 { 81 return legs; 82 } 83 84 //设置 set 85 public void setAge(int a) 86 { 87 if(age>=0) 88 { 89 age = a; 90 } 91 else 92 { 93 age = 0; 94 } 95 } 96 97 //获取 get 98 public int getAge() 99 { 100 return age; 101 102 } 103 104 105 106 public void eat() 107 { 108 System.out.println("动物进食"); 109 } 110 111 public void show() 112 { 113 System.out.println("name="+name+",age="+age+",legs="+legs); 114 115 } 116 }