java - 覆盖方法时,为什么可以增加访问权限但不能减少访问权限?

标签 java inheritance access-modifiers

为什么 Java 指定覆盖方法的访问说明符可以允许比覆盖方法更多但不能更少的访问?例如,父类(super class)中的 protected 实例方法可以在子类中公开,但不能私有(private)。

最佳答案

这是 OOP 的基本原则:子类是父类的完整实例,因此必须提供与父类至少相同的接口(interface)。让 protected /公共(public)的东西不那么明显会违反这个想法;您可以使子类无法用作父类的实例。

关于java - 覆盖方法时,为什么可以增加访问权限但不能减少访问权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6851612/

相关文章:

c++ - 将派生虚拟覆盖转换为基础纯虚拟成员

c++ - 将基对象返回到向上转换的派生类的最合适方法是什么?

c++ - 在继承场景中使用基本结构作为函数参数

c# - 如何让嵌套结构访问其父类的字段而不将这些字段设为公共(public)或内部?

java设计: repetitive methods of sub-objects

java - 如何读取同样使用 bouncycaSTLe 在 DER 中编码的 PKCS8 加密私钥?

java - 在java中用 '\\'替换 '\'字符串

java - 在没有编译错误的情况下更改对方法的访问

C# - 快速观察中的内部属性 "readable"但不使用反射?

java - 如何使用Java Spring仅在浏览器的一部分中显示pdf文件?