构造函数可以在Java中是私有的

时间:2011-05-01 13:25:03

标签: java constructor

可能重复:
Question about constructors in Java
{{3p>

构造函数可以在Java中保密吗?在什么样的情况下我们使用它?

4 个答案:

答案 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()
 }
}