gpt4 book ai didi

java - 最终类中的 protected 与包私有(private)

转载 作者:行者123 更新时间:2023-12-02 03:43:49 25 4
gpt4 key购买 nike

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

据我了解:

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

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

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

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

在最后一个类上,两者之间有区别吗?

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

最佳答案

如果我们将最终限制(防止继承)应用于经典的访问修饰符表,我们会得到:

Classic access modifiers table

所以,从逻辑的角度来看(如果我们将其研究为 Karnaugh map )修饰符 packageprotected 是等效的 (如果应用最终限制)。

再思考一下,我们可以质疑哪一个具有更好的性能,哪一个更接近良好的设计原则。考虑到the answererickson ,如果应用了final修饰符,两种情况在运行时应该具有相同的性能。但从形式上来看,声明它为protected,如果不能继承,是没有意义的。因此,(也称为默认无修饰符)应该是正确的选择.

关于java - 最终类中的 protected 与包私有(private),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58886039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com