B、构造函数的先后调用

正确情况下,如果父子类同时定义了构造函数,那么只会执行最后一个子类的构造函数,
而其上所有父类的构造函数都不会被执行(可以理解为被重写了)。
而如果我们想让父类的构造函数先执行,可以在子类的构造函数中,用parent::关键字先调用一下父类的构造函数,
parent::关键字,代表访问调用父类的成员属性(静态声明过的成员属性)和方法(构造函数、析构函数、静态声明过的成员函数)。
其案例代码如下:

  1. <?php
  2. # 父类
  3. class Test {
  4. public function __construct() { echo '我是父Test类的构造函数<br/>'; }
  5. }
  6. # 子类
  7. class Test2 extends Test {
  8. public function __construct() {
  9. # 让父类的构造函数先执行
  10. parent::__construct();
  11. echo '我是子Test2类的构造函数';
  12. }
  13. }
  14. # 使用demo如下:
  15. $obj = new Test2();