java - 同一包和不同包中的父类(super class)的子类有什么区别?

标签 java inheritance overriding

这两句话有什么区别:

AA- a subclass within the same package as the instance's superclass can override any superclass method that is not declared private or final.

BB- a subclass in a different package can only override the non-final methods declared public or protected.

我相信每个方法如果不是最终的,都可以从它的父类(super class)中重写
在java中,私有(private)方法是“自动最终的,并且对派生类隐藏”

在 Java 中,任何非静态方法都可以是 public、protected 或 private

因此,从 AA 句中我得出结论,只有公共(public)和 protected 父类(super class)的方法可以被重写
和句子BB相同

所以我很困惑这两个句子之间的区别是什么?

最佳答案

您的来源中的句子实际上有点不清楚。

句子 A 还包含默认声明的方法。这也称为“包私有(private)”。如果您只是在方法上省略访问修饰符,就会发生这种情况。

包外部的类将无法覆盖它们。

关于java - 同一包和不同包中的父类(super class)的子类有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31742698/

相关文章:

java - Spring CrudRepository 会抛出什么 RuntimeException?

java - Android NavigationView 不响应项目上的单击事件

java - 如何通过 wlst 列出 weblogic 中的用户和用户角色?

inheritance - Dart 中基于 Mixin 的继承是什么?

C++ 传递具有子类元素的类的列表

c++ - 具有覆盖方法的继承类的循环依赖

java - 在哪里可以初始化 Web 应用程序中的连接池?

c++ - 派生类返回分配的基类实例

c++ - 强制所有类在多级继承层次结构中实现/覆盖 'pure virtual' 方法

c# - 使用 override 和 new 关键字覆盖 ToString()