在继承中,凡是在父类已经实现的方法,其实算是一种契约或者规范,子类不应该在进行更改(重写);但是,由于这一点不是强制要求,所以当子类进行重写的时候,就会对继承体系产生破坏。
同时,继承带来便利的时候,也有弊端:给程序带来了侵入性,增加了对象之间的耦合性,可移植性低。当你修改基类时,子类都需要进行相应的修改。
那么,如何能够保持继承的优点,同时减少缺点对程序的影响呢?也就是我们要讨论的主角——“里氏替换原则”。
如果对每一个类型为S的对象o1, 都用类型为T的对象o2, 使得以T定义的所有程序P在所有的对象o1都替换为o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。
所有引用基类的地方都必须能透明地使用其子类进行替换。
第二种类型通俗易懂,就是说,只要父类出现的地方,都应该能用其子类进行替换。
原文:https://www.cnblogs.com/JackHou/p/11301941.html