封装简单的说就是把对象内部的一些实现细节隐藏起来,不对外公开,仅仅公开对该对象提供操作的结果,从而实现信息的隐藏。对于封装而言,一个对象他所封装的是自己的属性和发法,所以不需要依赖于其他的对象就可以完成操作。
在封装的过程中对象内部的变量数据我们成为成员变量,对象内部针对这些数据的操作我们称为成员函数,一个对象这些属性所反映出来的就是对象的状态。封装的具体步骤:修改属性的可见性来限制对属性的访问;为每个属性创建一对赋值(setter)方法和取值(getter)方法,用于对这些属性的存取;在赋值方法中,加入对属性的存取控制语句.
封装的好处主要有:隐藏类的实现细节;让使用者只能通过程序员规定的方法来访问数据;可以方便的加入存取控制语句,限制不合理操作.
封装时的权限控制符区别如下:
Ø private:成员变量和方法只能在类内被访问,具有类可见性.
Ø 默认:成员变量和方法只能被同一个包里的类访问,具有包可见性.
Ø protected:可以被同一个包中的类访问,被同一个项目中不同包中的子类访问.
Ø public:可以被同一个项目中所有类访问,具有项目可见性,这是最大的访问权限.
例如:丈夫和妻子。丈夫类有姓名,性别,年龄,妻子。
public class Husband {
/*丈夫类,对属性的封装,姓名,性别,年龄,妻子都是他的私有属性*/
private String name;
private String sex;
private int age;
private Wife wife;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void setWife(Wife wife) {
this.wife = wife;
}
}
同理
public class Wife {
private String name;
private String sex;
private int age;
private Husband husband;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setAge(int age) {
this.age = age;
}
public Husband getHusband() {
return husband;
}
public void setHusband(Husband husband) {
this.husband = husband;
}
}