1

可能重复:
在类中将构造函数设为私有有什么用?

什么时候使用私有构造函数有用?受保护的呢?

4

3 回答 3

5

当您想防止对象的外部实例化时,它很有用,例如静态工厂类、单例等。

于 2013-02-05T22:02:06.907 回答
1

我可以想到一些用途private

  • 防止外部实例化(完全静态的类或单例)
  • 有时需要默认构造函数来实例化您的类(例如Hibernate),但您可能不想将它们公开。
  • 委托构造函数

最后一个完全人为的例子:

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,它只是将特权少数扩展到子类和包邻居。

于 2013-02-05T22:06:05.303 回答
1

单例模式使用私有构造函数来控制对象的实例化。您可能遇到的另一个用例是当您希望在单元测试中使用特殊构造函数时(如果您在没有依赖注入框架的情况下运行单元测试),因此您不会将其公开,而是包保护并声明单元测试同一个包。

于 2013-02-05T22:06:12.377 回答