我正在學習PHP,當我試圖弄清楚爲什麼構造函數沒有被調用時,發現了一些令人驚訝的行爲。我可以強制子類使用父類的構造函數嗎?
<?php
class Shape {
function __construct() {
echo 'Shape.';
}
}
class Triangle extends Shape {
function __construct() {
echo 'Triangle';
}
}
$tri = new Triangle();
?>
我習慣java,所以我認爲這會輸出「形狀。三角形」。令人驚訝的是,它只是輸出「三角形」。我搜索了這個問題,顯然我可以通過將parent::__construct();
加入孩子班來解決它,但這看起來並不理想。有什麼我可以做的Shape類,以確保子類總是調用父構造函數?當父母有一個構造函數時,我真的必須在每個孩子的類中寫parent::__construct();
嗎?
我很確定你必須,除非你不定義子構造函數。 – 2010-11-08 03:47:58
[Superclass的構造函數在PHP中的子構造函數中運行嗎?]的可能的重複(http://stackoverflow.com/questions/738571/is-superclasss-constructor-run-inside-child-constructor-in-php) – outis 2012-02-24 09:28:39