每次我去申报一个扩展课程,
Class cookies extends Food{
public function __construct()
{
parent::__construct();
}
}
为什么我使用parent::__construct()
?
这是继承吗?只是扩展类不继承它的属性?
答案 0 :(得分:6)
如果这是您的子类构造函数的唯一内容,那么您根本不需要定义子构造函数,它只会运行父构造函数。
如果您使用构造函数创建子类,那么该子构造函数将运行而不是父类构造函数(即使它只是一个空体);因此,如果您需要运行父类的构造函数以及,则需要使用parent::__construct()
答案 1 :(得分:1)
真的很简单。如果您计划您孩子的班级有__construct
,那么您需要决定,"我是否也希望我父母的__construct
继承?" 如果是,那么您需要使用parent::__construct()
。
考虑这个例子:
class Actions {
function __construct() {
echo "I can do even more actions and.. ";
}
function jump() {
return "hop hop";
}
function eat() {
return "munch munch";
}
}
class Humans extends Actions {
function __construct() { //this will overwrite the parents construct
echo "I am a human and ...";
}
function talk() {
return "I can talk";
}
}
class Dogs extends Actions {
function __construct() { //this will NOT overwrite the parents construct
parent::__construct();
echo "I am a dog and ...";
}
function bark() {
return "I can bark";
}
}
如果我们运行Human()
函数,我们将获得以下内容:
$human = new Humans();
var_dump($human->talk());
/*
RESULT:
I am a human and ...
string 'I can talk' (length=10)
*/
但是,如果我们运行Dogs()
函数,我们将获得以下内容:
$dogs = new Dogs();
var_dump($dogs->bark());
/*
RESULT:
I can do even more actions and.. I am a dog and ...
string 'I can bark' (length=10)
*/