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 星