data-id="1190000004994154" data-licence="">
原文位址:PHP設計模式(四):繼承
Introduction
在PHP設計模式(二):抽象類別和介面以及PHP設計模式(三):封裝中,我們已經看過繼承,也就是extends關鍵字。
和C/C++,Java,Python等語言一樣,PHP也支援繼承,而且和其他語言沒有什麼不同。
繼承/Inheritance
還是用動物、鯨魚和鯉魚來舉例:
<code><?php abstract class Animal { protected $name; protected function chew($food) { echo $this->name . " is chewing " . $food . ".\n"; } protected function digest($food) { echo $this->name . " is digesting " . $food . ".\n"; } } class Whale extends Animal { public function __construct() { $this->name = "Whale"; } public function eat($food) { $this->chew($food); $this->digest($food); } } class Carp extends Animal { public function __construct() { $this->name = "Carp"; } public function eat($food) { $this->chew($food); $this->digest($food); } } $whale = new Whale(); $whale->eat("fish"); $carp = new Carp(); $carp->eat("moss"); ?></code>
運行一下:
<code>$ php Inheritance.php Whale is chewing fish. Whale is digesting fish. Carp is chewing moss. Carp is digesting moss.</code>
注意$this在Animal類、Whale、Carp類中的用法。
上面的程式碼看似常見,其實是暗含玄機。對於一個好的程式設計,需要:
類別和類別之間應該是低耦合的。
繼承通常是繼承自抽象類,而不是具體類別。
通常直接繼承抽象類別的具體類別只有一層,在抽象類別中用protected來限定。
Summary
合理的繼承對於好的程式設計同樣是必不可少的,結合abstract和protected,能讓你編寫出結構清晰的程式碼。
以上就介紹了PHP設計模式四:繼承,包含了設計模式,php方面的內容,希望對PHP教學有興趣的朋友有幫助。