繁体   English   中英

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

[英]Can I call a constructor of a subclass from the parent class?

在下面的代码中, 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();

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

如果您解释您正在尝试做的事情的用例,那么有人可能会提出更好的方法。

在我们讨论如何处理您的问题之前,我认为我们应该澄清一下您在此处的代码中显示的 OOP。

在您的示例中, class foo 是基础 class 并且具有所有类型的 foo 共有的功能和属性。 例如,Foo 可能是一棵树。 所有的树木都有树干、树根、树枝,并将阳光转化为能量。

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

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

现在,如果我了解您要做什么,您将通过实例化您的 child1 和 child2 类并从另一个 class 或方法/函数中调用这些对象所需的任何方法来实现它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM