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