爲了模擬包含相同類型的其他實例的對象關係,我可以定義一個類嗎?一個班級可以擁有自己類型的成員嗎?
class RussianDoll {
string name;
RussianDoll doll;
RussianDoll();
}
我該如何構建這個類的構造函數?
爲了模擬包含相同類型的其他實例的對象關係,我可以定義一個類嗎?一個班級可以擁有自己類型的成員嗎?
class RussianDoll {
string name;
RussianDoll doll;
RussianDoll();
}
我該如何構建這個類的構造函數?
一個類可以有自己類型的成員嗎?
當然可以。這其實很常見。在例如鏈表想想一個節點的情況下:
class Node {
Node next;
int value;
}
我應該如何建立這個類的構造函數(S)?
你有幾個選擇(見下文)。您顯然應該避免在構造函數的每次調用中創建類的新實例,因爲這會導致無限遞歸。
你可以採取一個Node
作爲參數並初始化它像
this.next = nextArg;
你可以將其初始化爲空引用
this.next = null;
你可以將它初始化爲this
this.next = this;
(它通常是一個壞主意,以創建一個構造函數裏面整個對象圖中的任何方式,所以我不會擔心這個反正:-)
當然,爲什麼不呢?只要你沒有無限制地實例化它。
class RussianDoll {
RussianDoll parentDoll;
RussianDoll(RussianDoll parentDoll) {
this.parentDoll = parentDoll;
}
}
是的。
這是一個常見的例子是一個鏈表。
但是,您不能無條件地在構造函數中創建子項,否則您將創建無限數量的對象。
答案取決於所使用的語言。 –
@Ignacio哪些語言不允許這樣做? – Dunes
謝謝大家。 –