gpt4 book ai didi

java - 为什么java不允许父类的实例方法在子类中受到更多限制

转载 作者:行者123 更新时间:2023-12-02 07:52:23 25 4
gpt4 key购买 nike

多态性允许程序员继承、重写或重载父类的实例方法。

但是,它不允许在子类中对父类的实例方法进行更多限制。即它不允许使用与父类实例方法相同的名称,在子类中声明为私有(private)。

如果子类没有重写实例方法,JVM 还会识别其父类版本。

同样,如果子类使其更具限制性,为什么 JVM 不识别实例方法的父类版本?

子类中父类的限制性更强的方法可以被视为子类特定方法,而不是被编译器重写的方法。

最佳答案

这一切都是为了遵循Liskov Substitution Principle .

为了使面向对象编程中的继承按预期运行,子类应该能够替换父类实例,并且不会破坏该类的用户。

使子方法更具限制性基本上是在说“我不希望此方法可见”。在这种情况下,让 JVM 自动替换父类实现只会增加大量困惑 - 仅更改调用行为可能会导致非常意外的行为,甚至完全在子类中......

关于java - 为什么java不允许父类的实例方法在子类中受到更多限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com