我一直在阅读关于构造函数的 the article ,其中写的是:
公共类同样可以防止在外部创建实例 它的包通过声明至少一个构造函数,以防止创建 具有公共访问权限的默认构造函数,以及声明否 公共的构造函数。
我对声明没有公开的构造函数感到困惑。这是因为如果我们没有声明任何构造函数,那么隐式声明的默认构造函数将使用类的访问修饰符隐式声明。这意味着如果该类声明为public,则默认构造函数也将是public。我们可以在包外使用它(在包外创建实例)。
答案 0 :(得分:3)
你错过了这一点:
通过声明至少一个构造函数
这是阻止创建默认构造函数的原因。
给出的示例具有默认访问(包访问)构造函数:
PackageOnly() { }
...所以它满足两个条件:a)它声明至少一个构造函数; b)它宣布没有公共建设者。
答案 1 :(得分:2)
不,该类可以公开,但构造函数可以protected
仅用于包访问,也可以是private
- 主要用于工厂静态方法