data-id="1190000004994154" data-licence="">
元のアドレス: PHP デザイン パターン (4): PHP デザイン パターンの継承
入門
(2): 抽象クラスとインターフェイス、および PHP デザイン パターン ( 3): カプセル化では、継承、つまり extends キーワードをすでに見てきました。
C/C++、Java、Python、その他の言語と同様に、PHP も継承をサポートしており、他の言語と何ら変わりはありません。
継承
例として動物、クジラ、コイを使用してみましょう:
<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>
Animal クラス、Whale クラス、Carp クラスでの $this の使用法に注意してください。
上記のコードはありふれたものに見えますが、実は謎が含まれています。優れたプログラム設計には、次のことが必要です:
クラス間の結合が低い必要があります。
継承は通常、具象クラスではなく抽象クラスから継承します。
通常、抽象クラスを直接継承する具象クラスは階層が1つだけで、抽象クラス内でprotectedで修飾されています。
概要
適切なプログラミングには、抽象と保護を組み合わせることで、明確な構造のコードを作成することもできます。
上記では、PHP のデザイン パターン 4: 継承について、デザイン パターンと PHP の内容を含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。