为了账号安全,请及时绑定邮箱和手机立即绑定

php继承及私有属性访问问题

php继承及私有属性访问问题

PHP
慕妹3146593 2018-09-21 17:01:05
class FatherClass{    // private $salary = 1000;     private $salary = 1000;    public function showInfo()     {        echo $this->phone . '<br/>';        echo $this->salary . '<br/>';     } }class ChildClass extends FatherClass{    protected $phone = '13987654321';    private $salary = 20000; } $child = new ChildClass(); $child->showInfo();echo '<pre>'; print_r($child); 输出:139876543211000ChildClass Object (     [phone:protected] => 13987654321     [salary:ChildClass:private] => 20000     [salary:FatherClass:private] => 1000)疑问:child实例现在有两个私有属性,我可以理解为成员方法在哪个类中,私有属性就调用哪个类的那么如果注释掉父类中的 private $salary = 1000; 结果就会报错:Cannot access private property ChildClass::$salary····不能访问 ChildClass 类的私有属性,我也可以理解,因为父类相对子类是类外,不能访问私有属性那么 protected 的属性也在类外,怎么又能访问了呢?如果理解为 子类继承了父类的成员方法,所以访问到了子类的 protected 属性,那为什么又不能访问子类的私有属性呢?还是说:私有属性是区分类的(从打印结果看出),访问私有属性时,只访问本类中的私有属性,而访问public和protected的属性,则根据对象实例具体的值决定?谢谢诸位,不知道我的描述清楚不
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

protected能访问, 是因为protected规定继承类可以访问,外部不可以. 设定这个关键字就是为了干这个的

查看完整回答
反对 回复 2018-09-21
  • 1 回答
  • 0 关注
  • 631 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信