如何保护类,使其在包外不可见
Posted
技术标签:
【中文标题】如何保护类,使其在包外不可见【英文标题】:How to protect classes so they are not visible outside their package 【发布时间】:2011-02-01 20:19:06 【问题描述】:我希望能够在我的包中包含两个“受保护”类。也就是说,我不希望我的包之外的文件看到它们是可见的 - 它们仅供包内的内部使用。
我该怎么做?
【问题讨论】:
【参考方案1】:只需省略所有关键字。默认可见性为package-private,仅在包内可见。
例如:
// class Foo is public
public class Foo
final private Bar bar = ...;
// class Bar is package-private
// (visible to all classes in the package, not visible outside the package)
class Bar
...;
【讨论】:
没错。并且关键字protected意味着它只能被派生类型访问 @Oskar:嗯,从技术上讲,protected 对包外部的派生类型和包内的所有类型都是可见的。跨度> Bar 包之外的类肯定看不到 Bar 类,所以他们不能扩展它。 (如果包内的公共类扩展了它会发生什么......?) Jakson S,您说的完全正确,所有访问级别都按顺序相互包含。 private 允许在类内访问,package-private(默认)允许在包内和在类内访问,protected 允许访问其他包和 包内的子类,最后 public 允许任何东西访问,因此包括所有其他级别。 Bennett McElwee,受保护的成员保持受保护,除非它们是方法并且被覆盖。但即便如此,它也将是允许访问的覆盖方法。 如果你不想让任何其他类继承,你可以添加public final
,这样你就可以使用该类但任何类都可以继承以上是关于如何保护类,使其在包外不可见的主要内容,如果未能解决你的问题,请参考以下文章