前回記事、PHPでオブジェクト指向入門12~サブクラスのメソッドはスーパークラスのメソッドを上書きできる(継承)では上書きできることを学びました。
ではスーパークラスも継承したいが、サブクラスで独自の処理を「追加して書いていきたい」という場合どうすればよいかを考えていきます。11月11日記事
目次
基本構文は以下の通りです。
parent::メソッド名(引数,・・・)
これで親クラスのメソッド名を引き継ぐことができます。
Superclass.php
<?php class Superclass{ protected $sports = "サッカー"; protected $name = "田中太郎"; public function Name(){ print "名前は{$this->name}です。"; } public function Sports(){ print "スーパークラスのスポーツは{$this->sports}が登録されています。"; } } ?>
Subclass.php
<?php require ("Superclass.php"); class Subclass extends Superclass{ /*public $sports = "ラグビー";*//*ここをコメントアウトしておかないとオーバーライドされてしまうため、コメントアウトをしておく。*/ public function Sports(){ parent::Sports(); print "ただ、ラグビーや空手の方がいいと思い始めています。";/*独自の処理*/ } } ?>
なんでもいいよ.php
<?php require_once ("../class/Subclass.php"); $c = new Subclass(); $c->Name(); echo "<br>"; $c->Sports(); ?>
※前回のコードは返り値指定をしているため「なんでもいいよ.php」の方にechoを書いていましたが、サブクラスの方でprintに変えたため、前回のコードと少し違う部分があります。
スーパークラスのメソッドは引き継ぎたいが、独自にも書いていきたいという場合はparentキーワードを使って呼び出し、さらに独自処理を記述していきましょう。
以上