封装是面向对象的三大特征之一
Java中封装的实质就是将类的状态信息(成员变量)隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操做和访问。
封装反映了事物独立性,有效避免了外部错误对此对象的影响,平且能够对对象使用者由于大意产生的错误操作起到预防作用。
封装的好出
隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便地加入存取来控制修饰符,来限制不合理的操作。
访问修饰符
访问修饰符共有四个
public:公共的
protected:受保护的
默认|default(什么都不写)
-
private:私有的
封装之public
public修饰的属性没有访问限制,是最宽松的封装。
例如
public class Person {
public String name;//公有
}
封装之private
private修饰的属性只能在类内被访问,类外无法访问,是最严格的封装。
例如:
public class Person {
private String name;//私有
}
name属性只能在Person类的类内使用,类外无法使用。
private不能修饰类
private class Classinfo{//报错,private不能修饰类
}
public class Student {
}
再看一个例子
public class Student {
int age;
private class Classinfo{//不报错,因为Cassinfo类是Student类的成员
}
}
private可以修饰类的成员,无论类的成员是什么。
getter and setter
最典型封装是:共有方法封装私有属性
例如:
public class Person {
private String name;//私有的属性,类外不能访问
private int money;//私有的属性,类外不能访问
public String getName() {//共有的读方法,外界可以读取
return name;
}
public void setName(String name) {//共有的写方法,外界可以写入
this.name = name;
}
public int getMoney() {//共有的读方法,外界可以读取
return money;
}
public void setMoney(int money) {//共有的写方法,外界可以写入
if(money<0){//封装中可以验证数据有效性
return;
}
this.money = money;
}
}