2011-12-19 27 views
4

我剛剛和一些同事討論了Java構造函數,設計模式和如果我通常等待一些參數,用非參數化構造函數初始化對象的好方法。從非參數化構造函數調用高級構造函數的好風格?

一位年紀稍長的來到了他的執行一直是這樣的方式:

public class Foo { 

public Foo() { 
this(0,0,0); 
} 

public Foo(int a, int b, int c) { 
this.a = a; 
this.b = b; 
this.c = c; 
} 
.. 
} 

我的問題是,是,好作風,什麼是它的行爲是什麼呢?

從我的理解應該是:

  • 它首先實例化一個對象,然後調用參數化的構造函數構造該類型與參數設置的一個新對象,並設置自己的參照新的。因此,GC已經刪除了第一個創建的。鏈構造時,曾經創造
+1

它不是實例化對象的構造函數,它是'new'關鍵字。構造函數只負責初始化對象。 – helpermethod 2011-12-19 08:51:56

+0

所以它始終是分配內存的新關鍵字,構造函數只是對象的計費? (也用於C++?) – Stefan 2011-12-19 08:54:44

回答

6
So the GC has then to delete the first created one. 

號只有1個實例。

要回答你的問題,是的,這是很好的風格,假設你既需要foo()foo(int, int, int)