里氏代换原则 (Liskov Substitution Principle, LSP)
定义严格表达:
如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换成O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。
简单说,任何基类可以出现的地方,子类一定可以出现。
从代码重构的角度理解:
西方著名的思辨,正方形是否是长方形的子类的问题。
这个例子意味着里氏代换与通常的数学法则和生活常识有不可混淆的区别。
应当尽量从抽象类继承,而不从具体类继承。