【发布时间】:2011-05-06 11:40:33
【问题描述】:
我正在学习 PHP,并在试图弄清楚为什么没有调用构造函数时发现了一些令人惊讶的行为。
<?php
class Shape {
function __construct() {
echo 'Shape.';
}
}
class Triangle extends Shape {
function __construct() {
echo 'Triangle';
}
}
$tri = new Triangle();
?>
我习惯了java,所以我认为这会输出“Shape.Triangle”。令人惊讶的是,它只输出“三角形”。我搜索了这个问题,显然我可以通过将parent::__construct(); 放在子类中来解决它,但这似乎并不理想。我可以对 Shape 类做些什么来确保子类总是调用父构造函数吗?每当父母有构造函数时,我真的必须在每个孩子的班级中写parent::__construct();吗?
【问题讨论】:
-
我很确定你必须这样做,除非你没有定义子构造函数。
标签: php inheritance constructor