举个例子:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
来自 C# 背景,我期望输出是
基础 __construct
子 __construct
然而,实际输出只是
子 __construct
不,如果子类定义了构造函数,则不会调用父类的构造函数。
从子类的构造函数中,您必须调用父类的构造函数:
parent::__construct();
如果需要的话,传递参数。
通常,您将在子类的构造函数的开头、任何特定代码之前执行此操作;这意味着,就您而言,您将拥有:
class Child extends Base {
function __construct() {
parent::__construct();
echo 'Child __construct<br/>';
}
}
并且,作为参考,您可以查看 PHP 手册的此页面:构造函数和析构函数 http://php.net/manual/en/language.oop5.decon.php- 它指出(引用) :
Note:如果子类的构造函数不会被隐式调用
定义一个构造函数。
为了
运行父构造函数,调用parent::__construct()
内
需要子构造函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)