php 父类含有构造,析构函数,当子类调用父类构造函数时,析构函数野一并调用,这是为什么?
class Car {
//增加构造函数与析构函数
function __construct(){
print "我是Car构造函数\n";
}
function __destruct(){
print "我是Car析构函数\n";
}
}
class Truck extends Car{
function __construct(){
print "我是Truck的构造函数\n";
parent::__construct();
}
}
$car = new Car();
$truck = new Truck();
结果:我是Car构造函数 我是Truck的构造函数 我是Car构造函数 我是Car析构函数 我是Car析构函数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
先实例化car,执行car的构造函数
实例化trunk,执行trunk的构造函数,在trunk中调用的父类构造函数并执行父类构造函数
执行析构函数顺序入栈顺序相反,“先进后出”,trunk后实例化,先从栈中弹出,执行析构函数,由于trunk没有析构函数,则执行父类的析构函数car2,如果trunk中有析构函数,覆盖类父类的析构函数,执行trunk中的析构函数,然后执行第一次实例化的car对象的析构函数
不是子类调用的,而是在脚本运行完毕后PHP销毁对象时自动调用的。