第一种定义:如果对每一个类型为S的对象o1,都有类型为T的读写o2,使得以T的定义的所有程序P在所有的对象o1都替换成o2时,程序p的行为没有发生变化,那么类型S是类型T的子类型
第二种定义:所有引用基类的地方必须能够透明地使用其子类的对象
1.子类必须完全实现父类的方法。
2.子类可以有自己的个性。
3.覆盖或实现父类的方法时输入参数可以被放大。
4 .覆写或实现父类的方法时输入结果可以被缩小。
在项目实战中,采用里氏替换原则时,尽力避免子类的个性,一旦子类有个性,这个子类和父类之间的关系就很难协调了。
--------
“”契约“”:前置条件 --后置条件
在设计的时候,子类中方法的前置条件必须与超类中复写的方法的前置条件相同或者更宽松。(建议)
网友评论