PHP 父类调用子类的重写方法

clipboard.png
有没有大神 写个demo 帮我 解释下这个问题

这是baseModel

clipboard.png

这是teacherModel 继承 baseModel, 里面写了一个formatList

clipboard.png

我在controller中调用 并没有用到teacherModel 的 formatList 没有打印的数据

clipboard.png

阅读 2.5k
2 个回答
$this->format();

直接调用就行了啊,显然你没有理解继承中的重写

class ModelB
{
    public function getList()
    {
        echo 'ModelB:getList';
        $this->format();
    }
    public function format()
    {
        echo 'ModelB:format';
    }
}
class ModelA extends ModelB
{
    public function format()
    {
        echo 'ModelA:format';
    }
}
(new ModelA)->getList();//ModelB:getList-ModelA:format-
<?php
class ModelB
{
    public function getList()
    {
        $this->format();
    }
    public function format()
    {
        echo "I am ModelB".PHP_EOL;
    }

}

class ModelA extends ModelB
{
    public function format()
    {
        echo "I am ModelA".PHP_EOL;
    }

}

class ControllerC
{
    public $obj;
    public function __construct()
    {
        $this->obj = new ModelA();
    }

    public function handle()
    {
        $this->obj->getList();
    }

}

$obj = new ControllerC();
$obj->handle(); //输出"I am ModelA"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题