- 不使用继承创建新的类:建立功能相近的类麻烦。
- 使用继承:克隆已有的类,并对克隆后的类做新增或更改操作。
- 继承的特点:父类发生变化,子类也反映这些变化。
- 继承图例
- 继承用以表示类之间的相似性
- 如果继承类没有做其他变动,那么子类和父类就完全一致了(类型一致,方法一致)
- 修改继承类的方式:
- 增加新方法(父类不能满足需求)
- 重载(overriding)
IS-A和IS-LIKE-A之争
- IS-A:只使用重载而不添加新的方法(子类和基类属于同一类型,子类对象可以替代基类(substitute)对象,符合完全替代(substitution principle)原则)
- IS-LIKE-A:为子类添加新的方法,子类不能完全替代基类,因为基类无法访问子类中的方法
通过迭代设计,重构父类,使系统满足替代原则