封装即把一个对象的属性、行为等放在一个实体类中隐藏起来,不允许外部对其进行修改,但是被封装的属性、行为会对外提供一个接口与外部联系,这个对外的接口通常情况下就是set()、get()方法。可以通过set()方法给属性设置值且可以在set()方法内部加入特定过滤条件,通过get()方法获取属性的值。
使用封装的三大好处:
(1).良好的封装能够减少耦合;
(2).可以对类的内部进行自由修改且不会对其他对象产生影响;
(3).隐藏具体信息和实现细节;
(4).可以对成员进行精确的控制;
代码实现:
(1).提供对外访问的方法:
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private int age ; private Wife wife; /* * setter()、getter()是该对象对外开发的接口 */ 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; } }
(2).不提供对外访问的方法
public class Wife { private String name; private int age; private String sex; 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 void setHusband(Husband husband) { this.husband = husband; } public Husband getHusband() { return husband; } }
(3).对set()这个访问入口做一些控制:
public class Husband { /* * 对属性的封装 * 一个人的姓名、性别、年龄、妻子都是这个人的私有属性 */ private String name ; private String sex ; private int age ; /* 改成 String类型的*/ private Wife wife; public int getAge() { return age; } public void setAge(int age) { if(age > 120){ System.out.println("ERROR:error age input...."); //提示錯誤信息 }else{ this.age = age; } } /** 省略其他属性的setter、getter **/ }
(4).对get()出口做一些控制:
public String getSexName() {
if("0".equals(sex)){
sexName = "女";
}
else if("1".equals(sex)){
sexName = "男";
}
else{
sexName = "人妖???";
}
return sexName;
}
以上内容均来自http://www.cnblogs.com/chenssy/博客,此博客为本人学习笔记