如果子类在扩展后覆盖它,我们如何通过子类访问原始父类变量。
class SimpleClass{
public $var = 'This is Parent';
public function getVar(){
return $this->var;
}
}
class ExtendClass extends SimpleClass{
public $var = 'This is Child';
public function getParent(){
return parent::getVar();
}
}
$obj = new ExtendClass();
echo $obj->getParent(); // Prints 'This is Child'
我确定它有一些与$ this伪变量有关的东西,因为我正在构造ExtendClass,在那个上下文中$这只能访问被覆盖的$ var变量。
所以我试图通过类方法静态访问变量。
class SimpleClass{
public static $var = 'This is Parent';
public function getVar(){
return self::$var;
}
}
class ExtendClass extends SimpleClass{
public static $var = 'This is Child';
public function getParentVar(){
return parent::getVar();
}
public function getChildVar(){
return self::$var;
}
}
$obj = new ExtendClass();
echo $obj->getParentVar();// Prints 'This is Parent'
echo $obj->getChildVar();// Print 'This is Child'
它有效,但我们如何通过Parent类的getVar()方法非静态地访问父类变量。
答案 0 :(得分:2)
除非子类在编辑之前明确备份原始值,否则您无法访问类成员的父级值,因为没有' ta 父母的价值。无论是孩子还是父母班级。代码共享相同的变量。