• inheritance
  • 实现策略
    • 父类实现一般化, 子类是父类的专门化
    • 共享部分提取 # 子类不是父类的一种, 函数思想考虑问题
    • 差异实现 # 覆盖变更部分,为了再利用使实现更轻松,不倾向使用
  • 问题
    • 多层级问题
      • 向上不好找方法定义
      • 修改方法时,向下影响子类 # 如动态作用域问题
    • 里氏替换原则 # 1987年提出,对父类成立的条件,一定对子类成立。为了维护父子关系间的一致性,继承是is-a关系
      • 实际编程中,子类功能增加常打破里氏替换原则,无论是在开始设计上避免还是在开发中放弃继承都很麻烦
  • 多重继承