2011-05-04 68 views
0

在下面的代碼中,foo的構造函數調用child1還是child2的構造函數?我可以從父類中調用子類的構造函數嗎?

class child1 extends foo{ 
    function child1(){ 
    do_stuff(); 
    } 
} 

class child2 extends foo{ 
    function child2(){ 
    do_stuff(); 
    } 
} 

class foo{ 
    function foo(){ 
    // run child1, child2 etc... ? is it possible? 
    } 
} 

new foo(); 
+0

反之亦然 - 您可以在擴展類中調用父方法。你究竟想要做什麼? – Mikk 2011-05-04 18:25:33

回答

0

在我們討論如何處理你的問題之前,我想我們應該澄清一下你在代碼中顯示的OOP。

在您的示例中,類foo是基類,並且具有所有類型的foo通用的功能和屬性。例如,Foo可能是一棵樹。所有樹木都有樹幹,根,枝,並將太陽光轉化爲能量。

現在你的child1和child2類將成爲foo的後代,並且具有與foo相同或不同的特定事物。例如,child1可能是一棵「是」樹的橡樹樹,但會添加樹葉屬性,橡子屬性和hibernate屬性。

Child1和Child2知道所有關於foo的知識,但foo不知道child1和child2存在。

現在,如果我明白你想要做什麼,你可以通過實例化你的child1和child2類並從另一個類或方法/函數中調用這些對象所需的任何方法來實現。

+0

謝謝,我想我誤解了班級的工作方式:( – Alex 2011-05-04 21:30:40

3

不,您只能從父類訪問類而不是其他方式。父母不知道這些子類是否存在。

如果你解釋一下你正在嘗試做的用例,可能會提出一個更好的方法。

+1

我假設你的意思是「職能」,而不是第一句中的「類」? – 2011-05-04 18:29:15

相關問題