public方法的继承,不是相当与子类也有了吗?
class Man { private $wife = '小甜甜'; public function show() { echo $this -> wife, '<br>'; } } class Tree extends Man { private $wife = '小嘿嘿'; } $lisi = new Tree(); $lisi -> show();
以上代码打印的结果是:小甜甜。
class Man { private $wife = '小甜甜'; public function show() { echo $this -> wife, '<br>'; } } class Tree extends Man { private $wife = '小嘿嘿'; public function show() { echo $this -> wife, '<br>'; } } $lisi = new Tree(); $lisi -> show();
以上打印结果是:小嘿嘿
为什么两种结果不一样呢?
2
收起
正在回答 回答被采纳积分+1
4回答
好帮手慕查理
2018-11-23 17:07:01
您好,因为继承,所以$lisi->show();调用父类的show方法,方法中输出的$this->wife,是父类中的属性。原因:属性是私有的,tree类是不能继承$wife属性。例如:
父类中的show方法为private,那么在子类中调用时就会报错。
<?php class Man { private $wife = '小甜甜'; private function show() { echo $this -> wife, '<br>'; } } class Tree extends Man { private $wife = '小嘿嘿'; } $lisi = new Tree(); $lisi -> show();
当属性改为public关键字时,子类可以继承,因此在子类中将$wife进行了重写,重写之后调用show方法输出的则是子类中的属性值。
<?php class Man { public $wife = '小甜甜'; public function show() { echo $this -> wife, '<br>'; } } class Tree extends Man { public $wife = '小嘿嘿'; } $lisi = new Tree(); $lisi -> show();
祝学习愉快!
PHP常用技术与ThinkPHP5框架开发
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星