猿问

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


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

这是baseModel

https://img4.mukewang.com/5c8f576c0001b95408000482.jpg

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

https://img4.mukewang.com/5c8f576e0001916d08000177.jpg

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

https://img.mukewang.com/5c8f576f0001d0b807730035.jpg

慕码人2483693
浏览 836回答 2
2回答

慕无忌1623718

$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"
随时随地看视频慕课网APP
我要回答