防止创建对象类

时间:2014-11-23 07:54:23

标签: java constructor

我一直在阅读关于构造函数的 the article ,其中写的是:

  

公共类同样可以防止在外部创建实例   它的包通过声明至少一个构造函数,以防止创建   具有公共访问权限的默认构造函数,以及声明否   公共的构造函数。

我对声明没有公开的构造函数感到困惑。这是因为如果我们没有声明任何构造函数,那么隐式声明的默认构造函数将使用类的访问修饰符隐式声明。这意味着如果该类声明为public,则默认构造函数也将是public。我们可以在包外使用它(在包外创建实例)。

2 个答案:

答案 0 :(得分:3)

你错过了这一点:

  

通过声明至少一个构造函数

这是阻止创建默认构造函数的原因。

给出的示例具有默认访问(包访问)构造函数:

PackageOnly() { }

...所以它满足两个条件:a)它声明至少一个构造函数; b)它宣布没有公共建设者。

答案 1 :(得分:2)

不,该类可以公开,但构造函数可以protected仅用于包访问,也可以是private - 主要用于工厂静态方法