以前认为里式替换原则就是父类的出现的地方子类就能出现,和多态没有多大的区别,这是错误的看法,应该再加上一句,不改变原来程序的逻辑。
常见三类违背里式替换的情况:
1:子类违背父类声明的功能
比如父类某个方法实现的是按照价格排序,子类修改为按照时间排序
2:子类违背父类对输入,输出,异常的规定
输入:子类对输入的校验变窄等 输出:子类的输出变窄,比如父类可以输出null或者其他,子类只能输出null,异常:父类抛出空指针,子类还抛出了其他异常
3:子类违背父类注释中所罗列的任何注释说明