class father {
public $pub='public';
private $pri='private';
protected $pro='protected';
public function getpri(){
echo $this->pri;
echo $this->pro;
echo $this->pub;
}
}
class son extends father{
public $pub='王二';
private $pri='黄金时代';
protected $pro='沉默的大多数';
public function getpub(){
echo $this->pub.'
';
echo $this->pro;
echo $this->pri;
}
}
$son=new son;
$son->getpri();
输出结果是 : private沉默的大多数王二;
有点想不通了 有没有大神给点合理的解释
调用子类对象的方法的话 输出的是 :沉默的大多数黄金时代;
你这儿new的是子类调用的是父类的getpri(),因为private $pri;它是私有属性只能调用getpri()所在的这个类的 $pri
虽然你调用的是父类的方法 但这个方法却是在子类里引用父类的 当这个方法输出变量时 子类中如果存在这个属性 优先使用子类中的属性
我与第一个回答者同样的感想 你调用的是一个只有父类中才有的方法 并且调用一个私有属性,他肯定会调用当前类的私有属性,所以会出现父类中的那个private,其他应该很好理解吧