前回記事、PHPでオブジェクト指向入門12~サブクラスのメソッドはスーパークラスのメソッドを上書きできる(継承)では上書きできることを学びました。 ではスーパークラスも継承したいが、サブクラスで独自の処理を「追加して書いていきたい」という場合どうすればよいかを考えていきます。11月11日記事

目次





parentキーワードというものを使っていく

基本構文は以下の通りです。

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キーワードを使って呼び出し、さらに独自処理を記述していきましょう。

以上

最終更新:2015年11月11日 18:01