sco*_*ttm 62 php abstract-class
举个例子:
abstract class Base {
function __construct() {
echo 'Base __construct<br/>';
}
}
class Child extends Base {
function __construct() {
echo 'Child __construct<br/>';
}
}
$c = new Child();
Run Code Online (Sandbox Code Playgroud)
来自C#背景,我希望输出为
Base __construct
Child __construct
但是,实际输出只是
孩子__construct
Pas*_*TIN 104
不,如果子类定义构造函数,则不调用父类的构造函数.
从子类的构造函数中,您必须调用父类的构造函数:
parent::__construct();
Run Code Online (Sandbox Code Playgroud)
如果需要,传递参数.
通常,您将在子类的构造函数的开头,在任何特定代码之前执行此操作; 这意味着,在您的情况下,您将拥有:
class Child extends Base {
function __construct() {
parent::__construct();
echo 'Child __construct<br/>';
}
}
Run Code Online (Sandbox Code Playgroud)
并且,作为参考,您可以查看PHP手册的这一页:构造函数和析构函数 - 它声明(引用):
注意: 如果子类定义构造函数,则不会隐式调用父构造函数.
为了运行父构造函数,需要parent::__construct()
在子构造函数内调用 .