PHP中的多级继承
问题描述:
我试图访问和修改父类中的数据,这些父类是另一个类的子级。 我有一个父类PHP中的多级继承
class GrandParent {
protected $data = 1;
public function __construct() {}
public function getData() {
return $this->data;
}
}
下面是我的第一级子
class Child extends GrandParent {
protected $c1Data;
public function __construct() {
$this->c1Data = parent::getData();
$this->c1Data = 2;
}
public function getData() {
return $this->c1Data;
}
}
如果我尝试实例化Child
类,做getData()
,我得到2这是正常的。我有另一个类继承Child
。
class GrandChild extends Child {
protected $c2Data;
public function __construct() {
$this->c2Data = parent::getData();
}
public function getData() {
return $this->c2Data;
}
}
的问题是,如果我尝试实例GrandChild
我,让我得到null
数据。是否有可能使我的GrandChild
类继承$c1Data = 2
并使用它。我还希望能够自己使用Child
和GrandParent
类,而不是抽象的。
答
你得到NULL
因为Child
类的__constructor
不会被调用,这就是为什么c1Data
属性是NOT SET。你应该明确地呼吁Child
__constructor
:
class GrandChild extends Child {
protected $c2Data;
public function __construct() {
// here
parent::__construct();
$this->c2Data = parent::getData();
}
public function getData() {
return $this->c2Data;
}
}
谢谢@u_mulder现在的工作。愚蠢的错误。 – Lexx