特性 解决问题 作者解读 按照3w解析
    封装 隐藏部分属性,控制数据访问权限(更安全),代码更集中 封装也叫作信息隐藏或者数据访问保护。类通过暴露有限的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。它需要编程语言提供权限访问控制语法来支持,例如 Java 中的 private、protected、public 关键字。封装特性存在的意义,一方面是保护数据不被随意修改,提高代码的可维护性;另一方面是仅暴露有限的必要接口,提高类的易用性。 What:隐藏信息,保护数据访问。
    How:暴露有限接口和属性,需要编程语言提供访问控制的语法。
    Why:提高代码可维护性;降低接口复杂度,提高类的易用性。
    抽象 不同业务具体处理的上层逻辑 封装主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象可以通过接口类或者抽象类来实现,但也并不需要特殊的语法机制来支持。抽象存在的意义,一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;另一方面,它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。 What: 隐藏具体实现,使用者只需关心功能,无需关心实现。
    How: 通过接口类或者抽象类实现,特殊语法机制非必须。
    Why: 提高代码的扩展性、维护性;降低复杂度,减少细节负担。
    继承 方法复用,基于抽象的方法实现 继承是用来表示类之间的 is-a 关系,分为两种模式:单继承和多继承。单继承表示一个子类只继承一个父类,多继承表示一个子类可以继承多个父类。为了实现继承这个特性,编程语言需要提供特殊的语法机制来支持。继承主要是用来解决代码复用的问题。 What: 表示 is-a 关系,分为单继承和多继承。
    How: 需要编程语言提供特殊语法机制。例如 Java 的 “extends”,C++ 的 “:” 。
    Why: 解决代码复用问题。
    多态 自定义化 多态是指子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现。多态这种特性也需要编程语言提供特殊的语法机制来实现,比如继承、接口类、duck-typing。多态可以提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础 What: 子类替换父类,在运行时调用子类的实现。
    How: 需要编程语言提供特殊的语法机制。比如继承、接口类、duck-typing。
    Why: 提高代码扩展性和复用性。