封装性的引入
首先先看这样的一段代码:
public class Test01 {
public static void main(String[] args) {
People p =new People();
p.name="jake";
p.sex=1;//1代表男,0代表女
p.age=18;
p.show();
}
}
class People{
String name;
int sex;
int age;
public void show() {
System.out.println("name:"+name+",sex:"+sex+",age:"+age);
}
}
在实际生活中,年龄age不可能为负值,所以当我们想对年龄进行限制时,则要在类中写一个限制输入年龄范围的方法。
public void setAge(int i) {
if(i>0) {age=i;}
else {age=0;//0带表年龄不合法,这里应该用异常,这个以后写
}
}
若只到此,若在main函数中p.age=-4;仍然可以对age赋值一个不合法的数,那么怎么才能实现对age的输入限制?
用权限修饰符:private int age;类中另写 setAge方法和getAge方法。
小结:在对用户的属性进行限制时,我们只能通过方法对其限制条件。同时,为了避免用户再次使用对象.属性的方式进行不合理的赋值,则必须将属性声明为私有的(private),此时,针对属性就体现出了封装性。
封装性的体现
- 类的属性私有化
- 不对外暴露私有的方法
- 单例模式
权限修饰符
由小到大排序
- private
- 缺省(default)
- protect
- public
4种权限可以用来修饰类的内部结构:属性,方法,构造器,内部类
修饰类的话:只能使用缺省和public。
总结:java提供4种权限修饰符来修饰类的内部结构,体现类及类的内部结构在被调用时的可见性的大小。