【发布时间】:2020-01-10 14:19:20
【问题描述】:
当属性被硬编码时,属性的继承是可能的。见下文:
class ParentObj {
protected $familyName = 'Lincoln';
}
class ChildObj extends ParentObj {
public function __construct() {
var_dump($this->familyName);
}
}
$childObj = new ChildObj();
// OUTPUT
string 'Lincoln'
当属性是动态的时,不能继承属性。见下文:
class ParentObj {
protected $familyName;
public function setFamilyName($familyName){
$this->familyName = $familyName;
}
}
class ChildObj extends ParentObj {
public function __construct() {
var_dump($this->familyName);
}
}
$familyName = 'Lincoln';
$parentObj = new ParentObj();
$parentObj->setFamilyName($familyName);
$childObj = new ChildObj();
// OUTPUT
null
那么问题来了:为什么子类不能继承动态设置的属性类?
【问题讨论】:
-
你误解了类和类实例的区别