繁体   English   中英

是否必须从PHP中的子类的构造函数中调用parent :: __构造?

[英]Is it mandatory to call parent::__construct from the constructor of child class in PHP?

是否必须从子类构造函数中的构造函数调用父构造函数?

要解释一下,请考虑以下示例:

class Parent{

    function __construct(){
        //something is done here.
    }

}

class Child extends Parent{

    function __construct(){
        parent::__construct();
        //do something here.
    }

}

如上所述这是很正常的。 但请考虑以下类Child构造函数:

function __construct(){
    //Do something here
    parent::__construct();
}

以上代码是否正确? 在调用父代的构造函数之前,我们可以做些什么吗? 另外如果我们不像下面那样在子的构造函数中调用父的构造函数是否合法?

class Child extends Parent{

    function __construct(){
        //do something here.
    }

}

我来自JAVA,我所展示的构造函数类型在Java中是不可能的。 但这些可以在PHP中完成吗?

这是强制性的吗?

没有

以上代码是否正确?

在调用父代的构造函数之前,我们可以做些什么吗?

是。 您可以按任何顺序进行操作。

另外如果我们不像下面那样在子的构造函数中调用父的构造函数是否合法?

是。 但它也不隐含 如果子构造函数没有调用父构造函数,那么它将永远不会被调用,因为子构造函数会覆盖父构造函数。 如果您的孩子没有构造函数,那么将使用父构造函数

不,调用父构造函数并不是必须的,但如果父构造函数具有子类也应该具有的副作用,那么它将是好的。 看到这个phpfiddle ,其中一个子类调用父构造函数,但另一个子类不调用。 因此,如果未调用父构造函数,它仍然是有效的代码。

此外,如果构造函数未在子类中声明(它将覆盖父构造函数),则将使用父类的构造函数。

暂无
暂无

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

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