「PHPでオブジェクト指向入門13~スーパークラスのメソッドを継承し、さらにサブクラスで独自の処理も書きたい(継承)~」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
前回記事、[[PHPでオブジェクト指向入門12~サブクラスのメソッドはスーパークラスのメソッドを上書きできる(継承)]]では上書きできることを学びました。
ではスーパークラスも継承したいが、サブクラスで独自の処理を「追加して書いていきたい」という場合どうすればよいかを考えていきます。11月11日記事
~
~
目次
#contents
~
~
----
~
*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 "ただ、ラグビーや空手の方がいいと思い始めています。";/*独自の処理*/
}
}
?>
result.php
<?php
require_once ("../class/Subclass.php");
$c = new Subclass();
$c->Name();
echo "<br>";
$c->Sports();
?>
※前回のコードは返り値指定をしているため「なんでもいいよ.php」の方にechoを書いていましたが、サブクラスの方でprintに変えたため、前回のコードと少し違う部分があります。
~
~
*まとめ
スーパークラスのメソッドは引き継ぎたいが、独自にも書いていきたいという場合はparentキーワードを使って呼び出し、さらに独自処理を記述していきましょう。
~
~
以上
前回記事、[[PHPでオブジェクト指向入門12~サブクラスのメソッドはスーパークラスのメソッドを上書きできる(継承)]]では上書きできることを学びました。
ではスーパークラスも継承したいが、サブクラスで独自の処理を「追加して書いていきたい」という場合どうすればよいかを考えていきます。11月11日記事
~
~
目次
#contents
~
~
----
~
*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キーワードを使って呼び出し、さらに独自処理を記述していきましょう。
~
~
以上