-
一、问题的引入
-
当我们创建一个类的对象以后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。
-
这里赋值操作受到属性的数据类型、存储范围的制约,除此之外,没有其他制约条件。但是,
-
实际问题中,我们往往需要给属性赋值加入额外的限制条件,这个条件就不能在属性声明时
-
体现,我们只能通过方法进行限制条件的添加。
-
同时,我们需要避免用户再使用“对象.属性”的方式进行赋值,则需要将属性声明为私有的
-
(private),此时,针对属性就体现了封装性。
-
二、封装性的体现:
-
我们将类的属性xxx私有化(private),同时提供公共的(public)方法来
-
获取(getXXX())和设置(setXXX())此属性的值。
-
拓展:封装性的体现:①属性私有化
-
②不对外暴露的私有方法
-
③单例设计模式
-
...
-
三、权限修饰符(封装性的体现,需要权限修饰符)
-
(权限从小到大排序)
-
四种权限可以用来修饰类的内部结构:属性、方法、构造器、内部类
-
修饰类 只能缺省或public
public classAnimalTest {public static voidmain(String[] args) {
Animal animal=newAnimal();
animal.setAge(12);
animal.setLegs(4);
animal.setName("cat");
animal.show();
}
}classAnimal
{privateString name;private intage;private intlegs;public voidshow()
{
System.out.println("name="+name+",age="+age+",legs="+legs);
}public void setLegs(intlegs) {if( legs>=0 && legs % 2 ==0)
{this.legs =legs;
}else{this.legs=0;
}
}public intgetLegs() {returnlegs;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}