对象把状态与动作放在一起
对象保存状态,也提供访问或改变状态的操作。以程序里的账户为例,余额是一项数据,存入与支取是操作;把两者组织在一起,可以让余额的改变遵守统一规则。对象可以表示现实事物,也可以表示解析器、连接和计算任务,不必都对应一个可触摸的实体。
通过接口维护约束
封装让外部使用者通过公开操作与对象交互,而不依赖内部表示的每个细节。某个操作可以检查输入,拒绝会破坏约束的修改。封装不是只把字段和函数写在相邻位置:如果调用者仍能任意绕过规则,代码虽然形成对象,数据边界却未必受到保护。
参考:[1]
类与继承怎样复用行为
在基于类的语言里,类规定一类实例的结构和行为。派生类可以继承已有操作,重新定义某些方法,或者加入新的能力。Python允许多个基类,并在文档中明确方法与实例的关系;但其他语言可能采用单继承或不同的可见性规则,因此不能把一种语言的类机制当作全部面向对象的定义。
参考:[2]
同一操作交给不同对象
当多个对象支持同一种操作时,调用者可以按接口发出请求,由实际对象决定执行哪种实现。例如绘制操作可以分别由圆和矩形完成,而调用位置不必复制每一种图形的全部细节。继承是实现复用的一种手段,组合对象和明确接口也能组织协作,不应为了复用就不断扩大继承层级。