知识卡片
泛化关系与利斯科夫替代测试
内容
泛化描述类型如何归入另一个更通用的类型:更通用者称超类型(supertype),较具体者称子类型(subtype),可组织成分类系统(taxonomy)层次结构。利斯科夫替代原理(LSP)提供泛化的简单测试:子类型必须能替换其超类型使用。需注意——OOP中的”子类”(subclass)不一定能通过子类型测试,继承关系不等于合法的泛化关系。分类系统会随时间推移变得不稳定,划分标准本质上也是主观的。
参考来源
- 位置:《恰如其分的软件架构》第13章《模型关系》13.5节《泛化关系》(源文件:_epub-src/OEBPS/text00133.html)
- 结论依据:原文定义泛化为类型归入更通用类型的关系,引入超类型/子类型术语,给出利斯科夫替代原理作为泛化的测试方法,并明确区分OOP中的子类与建模意义上的子类型不一定等价。
- 原始内容:更通用的类型称为超类型(supertype),而没有那么通用的类型则作为子类型(subtype)。……利斯科夫替代原理(the Liskov Substitution Principle)提供了一种对泛化的简单测试:子类型一定可以用它的超类型替换。……注意,在面向对象编程中,你会碰到子类(subclasses),它不能通过这种子类型(subtyping)测试。