最终类中的受保护与包私有

str*_*e10 5 java

我将以此作为序言,我相信我了解访问级别修饰符在 Java 中的工作原理。我的问题与在最终类中使用时受保护和包私有(无修饰符)之间的区别有关。

据我了解:

  • 如果你将一个类声明为final,你就无法扩展它,这意味着它不会有任何子类

  • 如果不向方法添加修饰符(包私有),则该方法仅在其自己的包中可见

  • 如果您声明一个受保护的方法,则该方法只能在其自己的包中访问(与包私有一样),此外,还可以由另一个包中的该类的子类访问

我的问题是,如果你的类是final类,package-private和protected之间有什么区别吗?Final修饰符使得不能有任何子类,所以看起来另一个包中不能有子类。这意味着无论哪种情况,它都只会在自己的包中可见。

在最后一堂课上,两者之间有区别吗?

如果没有区别,是否应该使用其中一个而不是另一个,或者这并不重要?

Arv*_*ash 0

除非并且直到涉及子类化,否则修饰符protected无修饰符之间没有区别。由于您将通过使用限制子类化final,因此使用没有意义protected,即使这样做是正确的。

在此输入图像描述