継承でどんなことが他にできるのかを考えていきます。11月10日記事
目次
同じメソッド名がスーパークラス(親クラス、基底クラスとも呼ばれる)とサブクラスにあった場合、サブクラスの方のメソッド名の方に適用される(上書きされる)ことが起きます。 これをメソッドのオーバーライドといいます。今回Sportsメソッドというものをスーパークラスとサブクラスに作り、上書きされる現象を確認したいと思います。
Superclass.php
<?php class Superclass{ public $sports = "サッカー"; public $name = "田中太郎"; public function Name(){ return "名前は{$this->name}です。"; } public function Sports(){ return "スーパークラスのスポーツは{$this->sports}が登録されています。"; } } ?>
Subclass.php
<?php require ("Superclass.php"); class Subclass extends Superclass{ public $sports = "ラグビー"; public function Sports(){ return "サブクラスのスポーツは{$this->sports}が登録されています。。"; } } ?>
なんでもいいよ.php
<?php require_once ("../class/Subclass.php"); $c = new Subclass(); echo $c->Name(); echo "<br>"; echo $c->Sports(); ?>
これでSubclassのラグビーのほうに上書きされていることを確認できると思います。
Subclass.php
<?php require ("Superclass.php"); class Subclass extends Superclass{ public $sports = "ラグビー"; /* public function Sports(){ return "サブクラスのスポーツは{$this->sports}が登録されています。"; }*/ } ?>
これでSuperclassのサッカーの方に戻ることも確認できると思います。
名前のほうはスーパークラスのものを継承していますが、スポーツの方は上書きされています。
このようにメソッドを上書きできることをオーバーライドと言います。
以上