PHP继承问题

时间:2010-08-24 00:33:33

标签: php oop inheritance class

如果我有以下课程:

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

然后使用继承来创建:

class bar extends foo {
    // Some code
}

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

4 个答案:

答案 0 :(得分:5)

来自manual

  

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

虽然文档没有明确说明,但这句话的反转也是正确的,即如果子类没有定义构造函数,则隐式调用父构造函数。因此,在您的示例中,实例化bar会自动调用foo::__construct

答案 1 :(得分:2)

它可以工作,父类的构造函数将被继承。 如果在instaciated类中定义新的构造函数,它将覆盖父类的构造函数。如果您仍想执行父构造函数,则应包括

parent::__construct(); 

在isntanciated class

的构造中

答案 2 :(得分:1)

__construct将结转,是的。

当您想要向该函数添加内容时会出现问题,即parent类派上用场时。

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

答案 3 :(得分:0)

当然,当你扩展一个类时,子类会继承父类中的所有public和protected方法。