可能重复:
What is the use of making constructor private in a class?什么时候使用私有构造函数有用?
什么时候使用私有构造有用吗?那么受保护的呢?
可能重复:
What is the use of making constructor private in a class?什么时候使用私有构造函数有用?
什么时候使用私有构造有用吗?那么受保护的呢?
当你想要防止对象的外部实例化时,它很有用。静态工厂类,单身,等
我能想到的几个用途为private
:
最后一个完全人为的例子:
private MyClass(int a) {
this.a = a}
public MyClass(int a, String B) {
this(a);
this.b = b;
}
public MyClass(int a, double c) {
this(a);
this.b = Double.toString(c);
}
类似的推理protected
,它只是扩展了少数特权子类和包的邻居。
单例模式使用私有构造函数来控制对象的实例化。你可能会遇到的另一个用例是当你想在单元测试中使用一个特殊的构造函数时(如果你运行没有依赖注入框架的单元测试),所以你不会公开它,但是包被保护,并声明单元测试相同的包裹。