PHP子类构造函数未正常工作,请求解析问题原因
问题原因分析:输出缺失用户名的问题
问题出在子类Customer的构造函数上:
- 父类
User的$name和$age属性是protected类型,子类本可以正常访问,但子类构造函数没有调用父类的构造函数来初始化这两个属性。 - PHP中,子类构造函数不会自动执行父类的构造函数。当你创建
Customer实例时,只会运行子类自己的构造函数,导致$this->name始终为空值,所以最终输出只显示paid $100,缺失了用户名部分。
修复方案
在子类Customer的构造函数中,添加对父类构造函数的调用,初始化$name和$age:
class Customer extends User{ private $balance; public function __construct($name, $age, $balance){ parent::__construct($name, $age); // 调用父类构造函数初始化name和age $this->balance = $balance; } public function pay($amount){ return $this->name . ' paid $' . $amount; } }
内容的提问来源于stack exchange,提问作者Adithya Nethmini
相关产品推荐
相关产品推荐

