目录
定义
- 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
- 要访问该类的代码和数据,必须通过严格的接口控制。
- 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
- 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
优点
- 良好的封装能够减少耦合
- 类内部的结构可以自由修改
- 可以对成员变量进行更精确的控制
- 隐藏信息,实现细节
如何封装
- 说了这么多的理论,接下来就用实例介绍一下如何封装
实例
-条件: 有两个类,一个叫Teacher,另一个叫Student,(接下来我简称为T类和S类)
1. T中有变量age,S想改变age的值。
public class Teacher {
int age;
}
-----------------------------------------
public class Student {
public static void main(String[] args) {
Teacher teacher=new Teacher();
teacher.age=12;
System.out.println(teacher.age);
}
}
结果
12
解释
这样T中的age的值就被S调用并改变了。
2.T不想让S改变age的值
public class Teacher {
private int age;
}
----------------------------
....(此处省略了S的代码,因为没有改变)
解释
T限制了age的访问权限,变为了私有的,这时S就不能调用它了。
3T想让S在一定范围内调用age,比如现实中age(年龄)不可能为负值,所以T决定age的范围不能低于0也不能大于124,否者你就不能调用。T的这种想法其实就是对age的封装
public class Teacher {
private int age;
public void setage(int age) {
if(age<0||age>124) {
System.out.println("无效");
}else {
this.age=age;
}
}
public int getage() {
return age;
}
}
-----------------------------------------
public class Student {
public static void main(String[] args) {
Teacher teacher=new Teacher();
teacher.setage(12);
System.out.println(teacher.getage());
teacher.setage(155);
}
}
结果
12
无效
解释
这就完成了对age的封装工作,总结来看封装其实就是限制条件。