当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 为什么里氏替换原则这样规定?

来源:3-10 里氏替换原则coding

qq_大雨还在下_03432217

2021-11-02

当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 为什么里氏替换原则这样规定?

写回答

2回答

慕UI4021841

2021-12-13

当方法重载的时候入参存在父子类的情况下,程序先会调用入参为子类的方法。如果子类重载的时候,子类入参是比父类入参更严格(即入参是父类 入参的子类的情况),调用时就会调用子类的方法,这样相当于调用时将父类方法覆盖了,而里氏替换原则含义1:子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。所以违反了里氏替换原则。

首先你先明白下面代码执行的结果再来看,为什么里氏替换原则能延伸出上述规定。

public static void method(Object obj){
    System.out.println("is obj...");
}

public static void method(String str){
    System.out.println("is str...");
}
public static void main(String[] args) {
    method(null);
}


4
0

honorbound

2021-12-28

一个软件实体如果适用一个父类的话,那一定适用于其子类,所有引用父类的地方必须能透明的使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变。

//img.mukewang.com/szimg/61cad50909de3d1908810565.jpg

如果要调用子类的重写方法就要修改代码了

//img.mukewang.com/szimg/61cad5340977b2c310220562.jpg

这样就不符合定义了

0
0

Java设计模式精讲-Debug方式+内存分析

系统学习设计原则,设计模式,锤炼编码内功,赢取高薪Offer

3430 学习 · 407 问题

查看课程