结果为啥会出现:跨裤,破球鞋,打扮 alex,哪里调用了 Sneakers 的 show 方法? [ 2.0 版本 ]
<?php
class Person
{
private $name;
function __construct($name)
{
$this->name = $name;
}
public function show()
{
echo "打扮".$this->name."\n";
}
}
class Finery
{
protected $person;
public function decorate($person)
{
$this->person = $person;
}
public function show()
{
if ($this->person != null)
{
$this->person->show();
}
}
}
class TShirts extends Finery
{
public function show()
{
echo "大T恤\n";
parent::show();
}
}
class BigTrouser extends Finery
{
public function show()
{
echo "跨裤\n";
parent::show();
}
}
class Sneakers extends Finery
{
public function show()
{
echo "破球鞋\n";
parent::show();
}
}
$person = new Person("alex");
$sneakers = new Sneakers();
$bigTrouser = new BigTrouser();
$tShirts = new TShirts();
$sneakers->decorate($person);
$bigTrouser->decorate($sneakers);
$tShirts->decorate($bigTrouser);
$tShirts->show();
共 4 个回答
-
因为 $bigTrouser->decorate($sneakers);
传入了sneakers Sneakers 里也有一个show方法 就把 Sneakers里的show方法执行了共 1 条回复YiiChina灌水总监 回复于 2021-03-17 15:40 回复"传入了sneakers Sneakers 里也有一个show方法 就把 Sneakers里的show方法执行了",这个Sneakers,BigTrouser,Person里面的show方法被执行的原因是什么呢?
YiiChina灌水总监 西藏阿里
注册时间:2019-12-25
最后登录:2022-01-26
在线时长:31小时55分
最后登录:2022-01-26
在线时长:31小时55分
- 粉丝6
- 金钱6325
- 威望0
- 积分6635