知识卡片

里氏替换原则的两种定义

普通读书笔记卡 · 1983.a

内容

里氏替换原则(LSP)有两种表述:形式化定义——类型S的对象能替换类型T的对象而不改变程序P 的行为,则S是T的子类型;通俗定义——引用基类的地方必须能透明使用子类对象而不出错。两者 等价,通俗定义更实用:父类能出现的地方子类必须能无感替换,反过来未必成立。发散:LSP把 “继承是否合法”从主观判断变成可验证的行为标准。

参考来源

- 位置:《设计模式之禅(第2版)》第2章《里氏替换原则》(源文件:_epub-src/text/part0008.html) - 结论依据:原文引用两段英文原始表述后逐句翻译解释,并总结"只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常……反过来就不行了",形成对该原则的操作性理解。 - 原始内容:所有引用基类的地方必须能透明地使用其子类的对象……通俗点讲,只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。