【问题标题】:Should we declare a public constructor when the class is declared as package private?当类被声明为包私有时,我们应该声明一个公共构造函数吗?
【发布时间】:2008-10-28 13:10:45
【问题描述】:

我认为在这种情况下不需要声明公共构造函数,因为无论如何在包之外都无法访问该类。但是当类只有包私有构造函数时是否有一些隐藏的影响?

【问题讨论】:

  • 一个相关的问题供你思考。公共抽象类应该有公共或受保护的构造函数吗?

标签: java coding-style


【解决方案1】:

不,您不必声明公共构造函数;包私有构造函数将同样可用。包外的类无论如何都无法使用构造函数,因为它们看不到该类。

【讨论】:

    【解决方案2】:

    如果您的类是包私有的,那么修饰符关键字public 指示的访问级别与构造函数的默认包私有访问级别是等效的。

    但是,如果在开发过程中更改了类的可见性,您可以指明您希望该方法具有的行为。当您打开一些以前是内部的 API 时,可能会发生这种情况。在这种情况下,将构造函数声明为包私有看起来更保守,因为您不会同时打开所有门。

    【讨论】:

    • 嗨 Denis R。我进行了一些广泛的编辑以使答案更具可读性。如果您不同意,您可以快速浏览并回滚吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-16
    • 2016-02-23
    • 2016-06-12
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多