java - 为什么在覆盖时不允许缩小方法的范围

标签 java oop inheritance

在 Java 中,当我重写一个方法时,编译器会将任何试图缩小可见性的尝试标记为错误。例如:我无法将公共(public)方法重写为 protected 方法,但我可以将 protected 方法重写为公共(public)方法。

我有兴趣了解这条规则背后的设计决策/想法。

最佳答案

子类应该始终满足父类(super class)的契约。参见 Liskov Substitution principle .

方法的可见性是这个契约的一部分。因此,在父类(super class)中公开可见的任何内容在子类中也应该公开。

关于java - 为什么在覆盖时不允许缩小方法的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11484667/

相关文章:

Python在继承时使用带有super的类属性

java - 通过Application更新Activity外的TextView

java - 如何将具有特殊字符的参数从一个jsp页面传递到另一个jsp页面?

java - 我的循环不循环

java - 安全套接字连接

对象中的php对象,获取顶级对象实例

java - java中如何引用扩展子类?

c++ - 我应该如何释放不使用 "new"关键字创建的对象的内存?

c# - 从数据库面向对象?

c++ - 在派生类中添加虚拟说明符