可能重复:
Question about constructors in Java
{{3p>
构造函数可以在Java中保密吗?在什么样的情况下我们使用它?
答案 0 :(得分:7)
是。您可能会使用它来实现工厂模式。
答案 1 :(得分:4)
如果将所有构造函数设为私有,则无法对类进行子类化:
public class NoChildren
{
private static final NoChildren instance = new NoChildren();
private NoChildren() {}
public static NoChildren getInstance() { return instance; }
// Add more and try to subclass it to see.
}
答案 2 :(得分:3)
是的,constructors can be private使用Java和其他语言。singleton pattern以使用私有构造函数而闻名。
第一篇链接文章的其他例子:
如果要控制对象的实例化方式(如果有的话),可以使用私有构造函数。例如,在C#中,您可以显式定义静态类,并强制该类仅包含静态成员和常量。您不能在Java中显式执行此操作,但您可以使用私有构造函数来防止实例化,然后在类中仅定义静态成员并且基本上具有静态类。
常量类就是一个例子,你也可以在一个可能包含实用函数的类中使用它(例如基本的数学运算),因为它只包含常量(如pi和e)和静态数学方法。
答案 3 :(得分:2)
构造函数可以是私有的。这通常用于Singleton模式,或者您只想通过静态工厂方法访问对象。
实施例
Class MyClass {
private MyClass()
{
//private
}
public static MyClass newInstance()
{
return new MyClass()
}
}