継承でどんなことが他にできるのかを考えていきます。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のSportsメソッドをコメントアウト

Subclass.php

<?php
require ("Superclass.php");

class Subclass extends Superclass{
	public $sports = "ラグビー";
	
/*	public function Sports(){
		return "サブクラスのスポーツは{$this->sports}が登録されています。";
	}*/
}
?>

これでSuperclassのサッカーの方に戻ることも確認できると思います。

まとめ

名前のほうはスーパークラスのものを継承していますが、スポーツの方は上書きされています。 このようにメソッドを上書きできることをオーバーライドと言います。

以上

最終更新:2015年11月11日 17:32