您的位置:首页 > 编程语言 > PHP开发

php的学习笔记之面向对象(四)继承补充

2016-03-09 22:37 681 查看
之前说到每次新建一个对象,都会先执行__construct方法,那么在继承的时候,是否先执行父类的_construct方法,再执行子类__construct方法呢?

我们来做一个实验:

class Father{
public function __construct(){
echo "father has constructed";
}
}
class Child{
public function __construct(){
echo "child has constructed";
}
}
$c = new Child();


输出结果如下:

child has constructed

说明在创建子类的时没有调用父类的__construct方法,这是为什么呢,原来这是用到php中的重写(overwrite)这样的机制,子类的构造函数实际上是覆盖(override)了父类的构造函数,这时执行的是该子类的构造函数。

那么如果子类不写__construct方法会发生什么事呢?我们来实验一下:

class Father{
public function __construct(){
echo "father has constructed";
}
}
class Child{
public function show(){
echo "dd";
}
}
$c = new Child();
$c->show();

输出结果为:dd


;

输出结果为:dd

说明父类的__construct()没有被继承。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: