在 Java 中,当我重写一个方法时,编译器会将任何试图缩小可见性的尝试标记为错误。例如:我无法将公共(public)方法重写为 protected 方法,但我可以将 protected 方法重写为公共(public)方法。
我有兴趣了解这条规则背后的设计决策/想法。
最佳答案
子类应该始终满足父类(super class)的契约。参见 Liskov Substitution principle .
方法的可见性是这个契约的一部分。因此,在父类(super class)中公开可见的任何内容在子类中也应该公开。
关于java - 为什么在覆盖时不允许缩小方法的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484667/