在子类中调用父构造方法时,我们将面对两种情况。
如果子类定义了构造函数,则无法在子类中直接运行父类的构造函数。为了运行父构造函数,需要在子构造函数内调用parent::__ construct()。
<?php class grandpa{ public function __construct(){ echo "I am in nhooo.com"."\n"; } } class papa extends grandpa{ public function __construct(){ parent::__construct(); echo "I am not in nhooo.com"; } } $obj = new papa(); ?>
Output: I am in nhooo.com I am not in nhooo.com
在上面的示例中,我们使用parent::__ construct()来调用父类的构造函数。
如果子级没有定义构造函数,则可以像常规的类方法一样从父类继承它(如果未声明为私有)。
<?php class grandpa{ public function __construct(){ echo "I am in nhooo.com"; } } class papa extends grandpa{ } $obj = new papa(); ?>
输出结果
I am in nhooo.com
这里父类被隐式调用,因为在子类中我们没有在子类中声明任何构造函数。