【问题标题】:How to protect classes so they are not visible outside their package如何保护类,使其在包外不可见
【发布时间】:2011-02-01 20:19:06
【问题描述】:

我希望能够在我的包中包含两个“受保护”类。也就是说,我不希望我的包外的文件看到它们是可见的 - 它们仅供包内的内部使用。

我该怎么做?

【问题讨论】:

    标签: java class protected


    【解决方案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,这样你就可以使用该类但任何类都可以继承
    猜你喜欢
    • 2012-03-05
    • 2011-06-22
    • 1970-01-01
    • 2018-03-24
    • 2022-10-12
    • 2015-11-05
    • 2021-03-24
    相关资源
    最近更新 更多