面向对象三大特征之封装

 上半句+下半句。三流的书籍和博客只会告诉你上半句,因为它们的作者自己也不知道下半句,而让我们接近真理,走的更远的是下半句。并且下半句往往非常简单。

上半句就是一些半吊子挖出的天坑,就算下半句非常简单。因为上半句的误导产生的阻碍,让无数人很多年也接触不到讲述真理的下半句。

时刻警醒:我们要学习的是讲述真理的下半句。

1.
什么是封装?
封装:
封装说了2个内容,一个是装,一个是封。

装:提供了一种聚合方式,提供了一种组合方式。
把东西装在一起,看作一个整体。
1.能够描述一个事物
事物通常具有属性和行为,我们通过数据和方法的整体可以描述这样的事物。
并且相关的数据和方法被放到一起,提高了内部聚合度。

2.装为我们提供了一种组合方式,我们通过装可以组合出一个东西,并且这个东西可以作为组件,继续组合出其他东西。
能够表达层次概念,和一些复杂的关系。

3.整体性。(1.用代码体现概念 2.方便了使用)
1)用代码体现概念,Student类。
2)方便了使用:
参数不用再传递零散的数据,而是直接传递对象。
通过对象直接调用操作其内部数据的方法。

封:
在装的基础上增加了访问控制,对外只提供公共的访问接口,其他的信息被隐藏起来。(上半句)
好处:(下半句)
避免了不必要的耦合,隐藏的信息对客户端不可见,不会和客户端发生耦合。我的代码和客户端代码只能通过公共的访问接口耦合。
当需要修改我们的代码时,只要保证公共的访问接口不变,客户端代码是不需要改变的。

2个特点,一个是封,一个是装。
把存在一定关系的一些东西装在一起。对外只提供公有的访问接口,隐藏了内部具体的实现细节。
好处:
把相关的东西放在一起聚合度高了。通过访问控制,只对外提供公有的访问接口。客户端只能通过接口来访问。
只要接口不改变,客户端就不需要改变,降低了耦合。

我们把具体的实现细节隐藏了。这些东西不需要被客户端知道,信息隐藏,更安全。

什么叫一定关系?
我们描述客观的事物,事物总是具有一定的属性和方法,我们可以认为这些属性和方法相关的,可以放到一起。




因为事物通常具有属性和行为,单独用数据,或者方法都无法描述。
装让我们可以将数据和方法放在一起,看作一个整体。这样一个整体就可以用来描述事物。
这种方式和单独用数据+方法的区别:
1.能够描述一个事物 2.层次 3.整体性。(1.明确了概念,方便了使用)

1.能够描述一个事物:
因为事物通常具有属性和行为,我们可以用数据和方法的整体来描述事物。
2.基本的东西,装在一起,产生一个整体,这个整体可以作为组件来创建另外一些整体。产生层次。
对应于实际,可以用来描述不同层次的事物。
举个例子:
姓名,年龄,创建一个学生,学生可以作为一个组件,来构建新的整体。
3.整体性。
1)明确了概念(在代码上): 有一个名字来表示这个整体。类名,包名。
2)方便了使用。
例子1:我们去菜市场买菜,为啥要个塑料袋呢。
例子2:如果你给别人一些东西,先给个a,在给个b,再给个......
现在,我直接给你一包东西。然后说你要的都在这里面。想用啥自己取。

具体表现:类和对象,包。
类:对一类具体事物的抽象。
对象:描述一个具体的事物。
包:描述的是一个模块,一个子系统。

这个可以用来构造不同粒度的概念。
姓名,年龄,创建学生。
多个学生,班级名,创建班级。
多个班级,学校名,创建学校。
基本类型,学生,班级,学校。粒度不断变大。

原文地址:https://www.cnblogs.com/mozq/p/10804914.html