2011-06-27 62 views
2

爲了模擬包含相同類型的其他實例的對象關係,我可以定義一個類嗎?一個班級可以擁有自己類型的成員嗎?

class RussianDoll { 

    string name; 
    RussianDoll doll; 

    RussianDoll(); 
} 

我該如何構建這個類的構造函數?

+2

答案取決於所使用的語言。 –

+0

@Ignacio哪些語言不允許這樣做? – Dunes

+0

謝謝大家。 –

回答

4

一個類可以有自己類型的成員嗎?

當然可以。這其實很常見。在例如鏈表想想一個節點的情況下:

class Node { 
    Node next; 
    int value; 
} 


我應該如何建立這個類的構造函數(S)?

你有幾個選擇(見下文)。您顯然應該避免在構造函數的每次調用中創建類的新實例,因爲這會導致無限遞歸。

  • 你可以採取一個Node作爲參數並初始化它像

    this.next = nextArg; 
    
  • 你可以將其初始化爲空引用

    this.next = null; 
    
  • 你可以將它初始化爲this

    this.next = this; 
    

(它通常是一個壞主意,以創建一個構造函數裏面整個對象圖中的任何方式,所以我不會擔心這個反正:-)

2

當然,爲什麼不呢?只要你沒有無限制地實例化它。

class RussianDoll { 
    RussianDoll parentDoll; 

    RussianDoll(RussianDoll parentDoll) { 
     this.parentDoll = parentDoll; 
    } 
} 
1

是的。
這是一個常見的例子是一個鏈表。

但是,您不能無條件地在構造函數中創建子項,否則您將創建無限數量的對象。

相關問題