2011-05-04 72 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

相关问题