2013-07-14 49 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 

運行時的目的是通過創建。

相關問題