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

PHP子类对象不能直接访问父类的属性吗

PHP子类对象不能直接访问父类的属性吗

PHP
Cats萌萌 2019-03-09 19:14:19
class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; function printHello() { echo "This is Myclass".PHP_EOL; echo $this->public.PHP_EOL; echo $this->protected,PHP_EOL; echo $this->private,PHP_EOL; } } class MyClass2 extends MyClass { public $public = 'Publi2c'; protected $protected = 'Protected2'; function printHello2() { echo $this->public.PHP_EOL; echo $this->protected,PHP_EOL; echo parent::$public,PHP_EOL; //这里报错了。Uncaught Error: Access to undeclared static //property: MyClass::$public } } $obj2 = new MyClass2(); $obj2->printHello2(); 请问我注释这里为什么出错了?
查看完整描述

3 回答

?
慕田峪9158850

TA贡献1794条经验 获得超8个赞

子类继承了父类,所以那个属性就是子类的对象实例的属性了。

没错,非静态属性是属于对象实例的,不是属于类的,所以不分子类父类。

静态属性才是属于类的,才能通过parent::static::self::这些关键字来访问。

方法也是类似的。

查看完整回答
反对 回复 2019-03-18
?
噜噜哒

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

报错已经告诉你了,父级的$public 不是一个静态变量,应该使用$this->去获取
查看完整回答
反对 回复 2019-03-18
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

不是静态变量啊

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 544 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号