Java 同一个包中的超类的子类和不同包中的子类有什么区别?

Java 同一个包中的超类的子类和不同包中的子类有什么区别?,java,inheritance,overriding,Java,Inheritance,Overriding,这两句话的区别是什么: AA-与实例的超类位于同一包中的子类可以重写任何未声明为private或final的超类方法 BB-不同包中的子类只能重写声明为public或protected的非final方法 我相信,如果每个方法不是最终的,则可以从其超类重写它 在java中,私有方法是“自动最终的,并且对派生类隐藏” 在java中,任何非静态方法都可以是公共的、受保护的或私有的 因此,从句子AA中,我得出结论,只有公共和受保护的超类的方法才能被重写 同样的句子B 所以我搞不清楚两个句子之间的区别是

这两句话的区别是什么:

AA-与实例的超类位于同一包中的子类可以重写任何未声明为private或final的超类方法

BB-不同包中的子类只能重写声明为public或protected的非final方法

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

在java中,任何非静态方法都可以是公共的、受保护的或私有的

因此,从句子AA中,我得出结论,只有公共和受保护的超类的方法才能被重写
同样的句子B


所以我搞不清楚两个句子之间的区别是什么?

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

句子A还包括默认声明的方法。这也称为“包专用”。如果您只是在方法上使用访问修饰符,就会发生这种情况


包之外的类将无法重写它们。

AA可以重写包私有方法,而BB不能。您忘记了默认修饰符