封装概念:利用访问权限保护内部变量安全性,隐藏内部具体实现细节,并提供外部访问内部成员变量的接口,达到数据隐藏目的,避免了数据不良篡改。
public class Student {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
if(("男".equals(sex)||"女".equals(sex))){
this .sex = sex;
}else{
//我们学校不收不男不女的学生
}
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age > 140){
//真的有活到140岁的人么..
}else{
this.age = age;
}
}
}
上述代码即封装了一个学生类,成员变量声明为私有只可通过Getter与Setter方法来访问。
public static void main(String[] args){
Student student = new Student();
student.setAge(200);
student.setSex("雌");
}
输出结果:真的有活到140岁的人么..
我们学校不收不男不女的学生
从输出结果可以看到在方法中添加的控制很好的保护了数据的安全性与合理性,需求变更仅需修改一处其他调用方法都会实现。
public static void main(String[] args){
Student student = new Student();
student.setName("韩蕾蕾");
student.setSex("女");
student.setAge(16);
System.out.println("姓名:"+student.getName()+" 性别:"+student.getSex()+" 今年芳龄"+student.getAge()+"还是闺中一朵花!");
}
输出结果:姓名:韩蕾蕾 性别:女 今年芳龄16还是闺中一朵花!
从输出结果可以看到通过对外方法Getter可以获取到私有的内部成员信息。
总结:封装保护内部成员的安全性,降低代码的耦合性,更好的隐藏内部实现细节。