PHPのクラス第5弾です。これでクラスの利用方法に関してはほぼ網羅することになります。 今回はオーバーライドについて学びます。

PHPのクラス その5

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2019年05月08日

PHPのクラス第5弾です。これでクラスの利用方法に関してはほぼ網羅することになります。

今回はオーバーライドについて学びます。

オーバーライドとは

オーバーライドとはをご覧ください。

オーバーライドの実装方法

実際のコードを例にとって見てみましょう。

<?php

class Test1 {

	public function echo() {
		echo "これはTest1です!!<br>";
	}

	public function echo2() {
		echo "これはTest1のecho2です!!<br>";
	}
}

// Test1を継承
class Test2 extends Test1 {

	// 全く同じメソッドechoをオーバーライド
	public function echo() {
		echo "これはTest2です!!!!!<br>";
	}

	// echo2もオーバーライドするが、Test1のecho2も利用
	public function echo2() {
		parent::echo2();
		echo "これはTest2のecho2です!!!!!<br>";
	}
}

$test = new Test2();
$test->echo();
$test->echo2();

Test2クラスはTest1クラスを継承しています。

オーバーライドはその名の通り上書きをする機能なので、Test2クラスでTest1クラスのechoメソッドを上書きします。

Test2のインスタンスを作成し、$test->echo()を実行すると、Test2で作成した機能のみが実行されます。Test1で作成されたecho関数は上書きされていますね。

次に、オーバーライドしたが、親クラスのメソッドも同様に実行しつつ、オーバーライドしたメソッドで特有の処理も行いたい場合があります。

echo2メソッドを見てみましょう。Test2クラスのecho2内の処理でparent::echo2()と書いてあります。このparent::が親クラスを表します。

そのまま実行したい親クラスのメソッドを実行すれば、オーバーライドしつつ、親クラスのメソッドも実行可能です。

実行結果は以下のようになります。