原创,转载请注明出处,谢谢!
替换能力在面向对象编程里是一个原则。它指出在计算机程序里,如果S是T的子类,那么T的对象能够被S的对象替换,也就是说S的对象可以代替T的对象,不需要改变程序的任何属性--正确性等等. 更正式的说,里氏代换原则((LSP) 是一个子类关系定义, 被称为强类型的子类定义,是在1987年最初由Barbara Liskov在一次主题为数据抽象和层次关系的大会发言中引入的. 它是语义上的关系、并不仅仅是语法上的关系,因为它保证了数据类型尤其是对象类型在层次上的互操作性。
假设 是类型为的对象的可证明属性. 那么对于类型为的对象 来说, 应也是可证明属性,这里是的子类。
这就是著名的里氏代换原则(LSP, Barbara Liskov, 1988): 子类型必须能够替换它的父类型。但是请注意,反过来就很可能错误!