鍍金池/ 問答/PHP/ PHP 父類調(diào)用子類的重寫方法

PHP 父類調(diào)用子類的重寫方法

clipboard.png
有沒有大神 寫個demo 幫我 解釋下這個問題

這是baseModel

clipboard.png

這是teacherModel 繼承 baseModel, 里面寫了一個formatList

clipboard.png

我在controller中調(diào)用 并沒有用到teacherModel 的 formatList 沒有打印的數(shù)據(jù)

clipboard.png

回答
編輯回答
終相守
$this->format();

直接調(diào)用就行了啊,顯然你沒有理解繼承中的重寫

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-
2018年1月8日 07:00
編輯回答
夢囈
<?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"
2017年1月23日 18:21