Kir*_*chs 18 php constructor class parent-child
在PHP构造函数和析构函数文档中,它说明了这一点
注意:如果子类定义构造函数,则不会隐式调用父构造函数.为了运行父构造函数,需要在子构造函数中调用parent :: __ construct().
但是,如果子类没有调用构造函数,那么父构造函数是否仍会被调用?或者我们应该创建一个调用父构造函数的构造函数吗?
IE:
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
}
}
Run Code Online (Sandbox Code Playgroud)
Kir*_*chs 16
也许这有点显而易见,但做了一些环顾四周,直截了当地回答这个问题并不是很容易找到,所以这里是:
如果子类确实不定义构造函数,则父类的构造将被调用.
在下面的示例中,$ obj仍然会从BaseClass调用构造函数,因为SubClass从不调用构造函数.
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
//I do not have a constructor :(
}
$obj = new SubClass();
Run Code Online (Sandbox Code Playgroud)
考虑构造函数是一种可以像任何其他方法一样被覆盖的方法.如果父类具有构造函数,则其所有子类都将继承该构造函数.如果子项覆盖构造函数,则在创建新对象时将使用此项,并且不会隐式调用父项的构造函数.如果子项不重写构造函数,则将使用父项的构造函数.这个概念适用于多重继承.
| 归档时间: |
|
| 查看次数: |
7683 次 |
| 最近记录: |