2021-03-16 17:07:46 176次浏览 3条回答 0 悬赏 10 金钱
<?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();

Yii用户专享10000元红包

Yii开发者福利,万元红包可用于云服务器、高防服务器、裸金属服务器、云数据库、高防IP购买和续费

  • 回答于 2021-03-16 20:34 举报

    因为 $bigTrouser->decorate($sneakers);
    传入了sneakers Sneakers 里也有一个show方法 就把 Sneakers里的show方法执行了

    1 条回复
    回复于 2021-03-17 15:40 回复

    "传入了sneakers Sneakers 里也有一个show方法 就把 Sneakers里的show方法执行了",这个Sneakers,BigTrouser,Person里面的show方法被执行的原因是什么呢?

  • 回答于 2021-03-17 08:23 举报

    赞,多发一些这样的内容

  • 回答于 2021-03-17 17:59 举报

    微信图片_20210317175908.png

您需要登录后才可以回答。登录 | 立即注册
YiiChina灌水总监
总监

YiiChina灌水总监 西藏阿里

注册时间:2019-12-25
最后登录:2天前
在线时长:17小时12分
  • 粉丝6
  • 金钱2530
  • 威望0
  • 积分2700

热门问题