0

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

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

    }

}

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

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();

    }

}

输出:被调用的成员函数

4

2 回答 2

5

所以我的问题是为什么私有构造函数?

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

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

于 2013-07-14T20:26:22.643 回答
0

有些对象依赖于特定的事物。假设 Runtime 类,它的实例将依赖于 System 当前的 Runtime 环境。所以,而不是,

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

RunTime 的对象由以下人员创建:

Runtime ru = Runtime.getRuntime();

因此,不允许像这样创建对象的类使用私有构造函数。

于 2013-07-14T20:40:33.263 回答