当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。 为什么里氏替换原则这样规定?
来源: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); }
40 -
honorbound
2021-12-28
一个软件实体如果适用一个父类的话,那一定适用于其子类,所有引用父类的地方必须能透明的使用其子类的对象,子类对象能够替换父类对象,而程序逻辑不变。
如果要调用子类的重写方法就要修改代码了
这样就不符合定义了
00
相似问题