私有构造函数在java中有什么用?

时间:2013-07-14 20:24:33

标签: java static constructor abstract-class

私有构造函数不允许创建对象,例如这里是代码..

class emp
{
    private emp()//private constructor
    {

    }
}

public class privateconstructor
{

    public static void main(String[] args)
    {
        emp e = new emp();//throws Error as constructor not visible

    }

}

通过将类声明为 abstract ,也可以阻止用户创建对象..所以我的问题是为什么私有构造函数?
仅供参考:
虽然对象可以通过静态方法创建,例如..

class emp
{
    private emp()//private constructor
    {

    }
    static emp createInstance()//static method
    {
        return new emp();//returns an instance
    }

    void disp()
    {
        System.out.println("member function called");
    }
}

public class privateconstructor
{

    public static void main(String[] args)
    {
        emp e = emp.createInstance();//creating object by static method  
        e.disp();

    }

}

输出:名为

的成员函数

2 个答案:

答案 0 :(得分:5)

  

所以我的问题是为什么私人建构?

这样做是为了防止从任何其他类构造类。这通常用于实用程序类,单例或具有工厂方法而不是构造函数的类。

所有enum类都有私有构造函数,它们对于Utility和Singleton类也很有用。

答案 1 :(得分:0)

有些对象依赖于特定的东西。假设运行时类,其实例将依赖于System的当前运行时环境。而不是,

Runtime run = new Runtime();  //java.lang.Runtime

RunTime的Object由:

创建
Runtime ru = Runtime.getRuntime();

所以那些不允许创建对象的类使用私有构造函数。