2013-02-05 101 views

回答

5

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

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

1

单例模式使用私有构造函数来控制对象的实例化。你可能会遇到的另一个用例是当你想在单元测试中使用一个特殊的构造函数时(如果你运行没有依赖注入框架的单元测试),所以你不会公开它,但是包被保护,并声明单元测试相同的包裹。

相关问题