面向对象编程有三大特征:封装、继承和多态。这篇文章我们来认识封装。
1、封装介绍
利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。
核心思想就是:把内部细节封装起来,只展现一些必要的部件。举个栗子:好像一台洗衣机我们这些买家只需要知道怎么操作它来洗衣服就行了,而卖家(厂家)需要把它的内部细节比如电机的启动是那个按钮来决定的,它如何定时的、在启动的时候如果开启洗衣机盖它怎么自己停止......
2、优点:
-
减少耦合: 可以独立地开发、测试、优化、使用、理解和修改
-
减轻维护的负担: 可以更容易被程序员理解,并且在调试的时候可以不影响其他模块
-
有效地调节性能: 可以通过剖析确定哪些模块影响了系统的性能
-
提高软件的可重用性
-
降低了构建大型系统的风险: 即使整个系统不可用,但是这些独立的模块却有可能是可用的
3、封装的实现步骤 (三步)
1)将属性私有化private。
2)提供一个公共的(public)set方法,用于对属性判断并赋值。
3)提供一个公共的(public)get方法,用于获取属性的值。
代码例子:
public class Person {
private String name;
private int gender;
private int age;
public String getName() {
return name;
}
public String getGender() {
return gender == 0 ? "man" : "woman";
}
public void work() {
if (18 <= age && age <= 50) {
System.out.println(name + " is working very hard!");
} else {
System.out.println(name + " can't work any more!");
}
}
}