[英]What is the difference between public, protected, package-private and private in Java?
[英]Protected vs package-private in final class
我将以我相信我了解访问级别修饰符在 Java 中的工作方式作为开头。 我的问题与在最终 class 中使用时受保护和包私有(无修饰符)之间的区别有关。
据我了解:
如果您将 class 声明为 final,您将无法扩展它,这意味着它不会有任何子类
如果您不向方法(包私有)添加修饰符,则它仅在其自己的 package 中可见
如果您声明一个受保护的方法,它只能在其自己的 package (与 package-private 一样)中访问,此外,在另一个 ZEFE90A8E604A7C840E88D03A67F6B7 中的 class 的子类中可以访问它
我的问题是,如果您的 class 是最终的 class,包私有和受保护之间有什么区别吗? final 修饰符使它不能有任何子类,因此在另一个 package 中似乎没有子类。 这意味着无论哪种情况,它都只会在自己的 package 中可见。
在最终的 class 中,两者之间有区别吗?
如果没有区别,应该使用一个而不是另一个,还是没关系?
如果不能有任何子类,那么protected
默认值没有任何优势。
但是, protected
的成员和构造函数将出现在 API 文档中。 这可能不是故意的。 有趣的事实: java.net.URL
曾经有一个protected
的方法,当被另一个替换时被弃用。 现在两者都已被删除。
通常,将成员设为public
(不是字段)或private
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.