我可以从父类调用子类的构造函数吗?

时间:2011-05-04 18:21:21

标签: php class object

在下面的代码中,foo的构造函数可以调用child1child2的构造函数吗?

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();

2 个答案:

答案 0 :(得分:3)

不,您只能从父类访问类,而不是相反。父母不知道那些子类存在。

如果您解释了您尝试做的事情的用例,则可能会建议更好的方法。

答案 1 :(得分:0)

在我们讨论如何处理您的问题之前,我想我们应该在您的代码中明确说明您的OOP。

在您的示例中,类foo是基类,并且具有所有类型的foo共有的功能和属性。例如,Foo可能是一棵树。所有树木都有树干,树根,枝条,并将阳光加工成能量。

现在你的child1和child2类将成为foo的后代,并且具有与foo不同或不同的特定内容。例如,child1可能是一个Oak,它是“树”,但添加了leaf属性,acorn属性和hibernate属性。

Child1和Child2知道有关foo的所有信息,但是foo不知道child1和child2存在。

现在,如果我理解你要做什么,你可以通过实例化你的child1和child2类并从另一个类或方法/函数中调用你需要的那些对象来实现它。