- 开篇
如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1代换o2时,程序P的行为没有变化,那么类型S是类型T的子类型。
定义
所有引用基类(父类)的地方必须能透明地使用其子类的对象。
描述
里氏替换原则告诉我们,在软件中将一个基类对象替换成它的子类对象,程序将不会产生任何影响,反过来则成立,即:如果一个软件实体使用的是一个子类对象,那么用其父类对象不一定能够成功替换。
例如:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我并不喜欢老鼠,虽然它也是动物。