【问题标题】:What is distinction between subclass of superclass in same package and different package?同一个包和不同包中超类的子类有什么区别?
【发布时间】:2024-01-01 18:55:01
【问题描述】:

这两句话有什么区别:

AA- 与实例的超类位于同一包中的子类可以覆盖任何未声明为私有或最终的超类方法。

BB- 不同包中的子类只能覆盖声明为 public 或 protected 的非最终方法。

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

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

所以从句子 AA 我得出结论,只有公共和受保护的超类的方法可以被覆盖
和sentenceBB一样

所以我混淆了2个句子之间的区别是什么?

【问题讨论】:

  • AA 可以覆盖包私有方法,而 BB 不能。
  • 你忘记了默认修饰符

标签: java inheritance overriding


【解决方案1】:

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

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

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

【讨论】:

    最近更新 更多