2013-07-14 50 views
0

私有构造不允许创建例如对象这里是代码..java中私有构造函数的用法是什么?

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

    } 

} 

输出:成员函数调用

+0

它确保你没有人能够创建一个新的实例(除非那个人知道反射),当你想要一个类的一个实例,比如Singleton模式时,它很有用。 – 2013-07-14 20:31:13

回答

5

所以我的问题是,为什么私人建筑工?

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

全部enum类具有私有构造函数,它们也可以用于Utility和Singleton类。

+0

+1已经覆盖了大部分:) –

+0

如果你现在没有关于singleton的任何东西,请参阅以下链接:http://www.dzone.com/articles/design-patterns-singleton –

0

有一些对象取决于具体的事情。假设运行时类,它的实例将依赖于系统的当前运行时环境。别让被创建,就像是使用私有构造函数对象

Runtime ru = Runtime.getRuntime(); 

因此类:所以不是,

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

运行时的目的是通过创建。

相关问题