封装 (计算机程序术语)
概念:
- 即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
理解:
- 在面向对象编程中,封装(encapsulation)是将对象运行所需的资源封装在程序对象中——基本上,是方法和数据。对象是“公布其接口”。其他附加到这些接口上的对象不需要关心对象实现的方法即可使用这个对象。这个概念就是“不要告诉我你是怎么做的,只要做就可以了。”对象可以看作是一个自我包含的原子。对象接口包括了公共的方法和初始化数据。在java中通过对象的get、set方法或关键字private,protected和public实现封装。
public class Women {
// 属性封装
private String name;
private int age;
// 方法封装
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
如上代码示例:
- 仔细看就会发现,Women 类没有提供getAge()的方法,这是因为不想让自己的年龄被外界访问。
- 接下来呢,就是封装可以把一个对象的属性私有,而提供一些可以被外界访问的属性的方法。
上面那例子可能没有突出封装的好处,下面来个超简单的表达下:
public class OutPut{
public static void output(String str){
System.out.println(str);
}
}
//上面就是对 System.out.println();的封装。
//调用的时候 :
public class Use{
public static void main(String[] args){
OutPut.output("HELLOWORLD!");
}
}
//这样用的时候就不直接用使:System.out.println("HELLOWORLD!");
作用:
- 对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。
- 对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。