【发布时间】:2017-05-14 01:49:32
【问题描述】:
来自Wikipedia,
Liskov 的行为子类型概念定义了 对象的可替代性;也就是说,如果 S 是 T 的子类型,那么 程序中 T 类型的对象可以被 S 类型的对象替换 在不改变该程序的任何理想属性的情况下(例如 正确性)。
假设如下类层次结构:
- 基础抽象类 -
AnimalWithFur。它有一个只读属性furColor,在后继者中被覆盖。 - 基类的后继者 -
Cat,覆盖furColor并返回 gray。 - Cat 的继任者 -
Tiger,它会覆盖furColor并返回 striped。
然后我们声明一个带有 Cat 类型参数的方法(not AnimalWithFur)。
向该方法发送Tiger 实例是否违反了 SOLID 中的 L?
【问题讨论】:
标签: oop solid-principles liskov-substitution-principle