我正在学习PHP并且在我试图弄清楚为什么没有调用构造函数时发现了一些令人惊讶的行为.
<?php
class Shape {
function __construct() {
echo 'Shape.';
}
}
class Triangle extends Shape {
function __construct() {
echo 'Triangle';
}
}
$tri = new Triangle();
?>
Run Code Online (Sandbox Code Playgroud)
我习惯了java,所以我认为这会输出"Shape.Triangle".令人惊讶的是,它只输出"三角形".我搜索了这个问题,显然我可以通过parent::__construct();加入子类来解决这个问题,但这似乎并不理想.我可以对Shape类做些什么来确保子类总是调用父构造函数吗?parent::__construct();只要父母有一个构造函数,我真的必须在每个孩子的班级写作吗?