封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。
谈封装,可以从数据、功能和设计三个角度入手:
1.数据角度
- 符合人类的思考方式
- 将多个变量组合到一个自定义的类中
- 将对数据和对数据的操作整合到一起。
2.功能角度
对外提供必要的功能,隐藏对象的属性和实现细节。
- 私有化(Python中以
__
开头,在内部修改成员名称) - 属性(对实例变量的保护,拦截读/写操作)
3.设计角度
①分而治之:
- 将大的需求分解为多个类,每个类负责一个职责。
②变则疏之:
- 遇到变化点单独封装为一个类
③高内聚:
- 一个类有且只有一个发生变化的原因
④低耦合:
- 类与类的关系松散