php - 继承的函数不访问子类的私有变量
问题描述
我需要一些帮助。这段代码并不意味着做任何事情,我只是想了解这些继承函数是如何工作的。
所以父母和孩子都有 $wheels 变量并设置为私有(这没有意义,但我只是在玩代码)。
使用一种方法打印Instance的轮数。这个方法在子类中没有被覆盖。创建了父对象和子对象,并使用每个对象调用了 wheel_details()。
但是,当使用子对象调用时,该方法不使用子对象的私有 var。相反,它打印父对象的 var。
您认为它如何以及为什么访问父类的私有 var 而不是它自己的私有 var。
感谢对此的见解。TIA
class Bicycle {
private $wheels = 2;
public function wheel_details(){
return " It has {$this->wheels} wheels. Invoked by ". get_class($this) ;
}
}
class Unicycle extends Bicycle {
private $wheels = 1;
}
$b1 = new Bicycle;
$b2 = new Unicycle;
echo "Bicycle1 wheels ". $b1->wheel_details(). " <br />";
echo "Bicycle2 wheels ". $b2->wheel_details(). " <br />";
/*Output
=======
Bicycle1 wheels It has 2 wheels. Invoked by Bicycle
Bicycle2 wheels It has 2 wheels. Invoked by Unicycle
*/
解决方案
这是设计使然:
声明为私有的成员只能由定义该成员的类访问。
如果要覆盖子类的值,请protected
改用。
推荐阅读
- angular - 复选框没有给出正确的角度值
- android - 通过邮递员请求 api 的速度很快,但使用 volley 很慢
- android - ReactJS 不会出现在移动设备上
- ios - 迅速。如何从闭包中返回函数
- google-cloud-platform - istio 默认安装 - 流量被阻塞?
- vue.js - 无法使用 babel.config.js 排除带有 vue-cli 4 的 core-js polyfill
- plotly - 使用 Plotly 导出图表时提高图像质量
- linux - 从 Linux 中的给定文件中导出特定部分
- reactjs - Reactjs 在现有状态转换期间无法更新
- vi - Vi 编辑器突然无法正常工作