灵感来自这个答案:
里氏替换原则要求 是
- 前提条件不能在子类型中得到加强。
- 子条件不能弱化后置条件。
- 超类型的不变量必须保留在子类型中。
- 历史记录约束(“历史记录规则”)。只能通过对象的方法(封装)将其视为可修改的对象。由于子类型可能会引入父类型中不存在的方法,因此这些方法的引入可能会导致子类型中状态不允许在父类型中发生变化。历史记录约束禁止这样做。
我希望有人能发布违反这4点的类层次结构,以及如何相应地解决它们。
我正在寻找出于教育目的的详细说明,以了解如何识别层次结构中的四个点以及解决该问题的最佳方法。
注意:
我希望发布代码示例供人们使用,但是问题本身是关于如何识别错误的层次结构的:)
该SO问题
—
StuartLC