B、构造函数的先后调用
正确情况下,如果父子类同时定义了构造函数,那么只会执行最后一个子类的构造函数,
而其上所有父类的构造函数都不会被执行(可以理解为被重写了)。
而如果我们想让父类的构造函数先执行,可以在子类的构造函数中,用parent::关键字先调用一下父类的构造函数,
parent::关键字,代表访问调用父类的成员属性(静态声明过的成员属性)和方法(构造函数、析构函数、静态声明过的成员函数)。
其案例代码如下:
<?php
# 父类
class Test {
public function __construct() { echo '我是父Test类的构造函数<br/>'; }
}
# 子类
class Test2 extends Test {
public function __construct() {
# 让父类的构造函数先执行
parent::__construct();
echo '我是子Test2类的构造函数';
}
}
# 使用demo如下:
$obj = new Test2();