【问题标题】:PHP Inheritance QuestionPHP继承问题
【发布时间】:2010-08-24 00:33:33
【问题描述】:

如果我有以下课程:

class foo {
    function __construct() {
        // Some code
    }
}

然后使用继承来创建:

class bar extends foo {
    // Some code
}

当我实例化类 'bar' 时,它会自动执行来自 'foo' 的 __construct 方法,还是我需要做其他事情才能执行该方法?

【问题讨论】:

  • 你试过了吗? :)

标签: php oop inheritance class


【解决方案1】:

来自manual

注意:父构造函数不是 如果子类隐式调用 定义了一个构造函数。

虽然文档没有明确说明,但反之亦然,即如果子类未定义构造函数,则隐式调用父构造函数。因此,在您的示例中,实例化 bar 将自动调用 foo::__construct

【讨论】:

    【解决方案2】:

    它有效,父类的构造函数将被继承。 如果你在 instaciated 类中定义了一个新的构造函数,它将覆盖父类的构造函数。如果您仍想执行父构造函数,则应包括

    parent::__construct(); 
    

    在 thje istanciated 类的构造函数中

    【讨论】:

      【解决方案3】:

      __construct 会继续使用,是的。

      当您想向该函数添加一些东西时,问题就出现了,这时parent 类就派上用场了。

      class bar extends foo {
          $this->doSomethingElse();
          parent::__construct();
      }
      

      【讨论】:

        【解决方案4】:

        当然,当您扩展一个类时,子类会继承父类的所有公共和受保护方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-11
          • 2013-09-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多