【PHP】クラスを継承する
今回はクラスの継承について記述します。
クラスの継承とは?
クラスの継承とは、あるクラスからプロパティやメソッドを引き継いだ新しいクラスを作成する機能です。
いわゆるクラスのコピー機能です。クラスを引き継いだ新しいクラスを「子クラス」と呼び、コピー元のクラスを「親クラス」と呼びます。
クラスの継承方法
クラスの継承は以下の構文で行います
|
1 2 3 |
class "継承するクラス名" extends "継承元となるクラス名"{ } |
「class “継承クラス名” extends “継承元となるクラス名”」で、継承元から変数やメソッドをそっくりそのまま引き継いだクラスを作成することができます。サンプルコードで確認してみましょう。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?php class Player { //クラスを宣言 public $name; //「name」変数を宣言 public $hp; //「hp」変数を宣言 public $mp; //「mp」変数を宣言 public function __construct($name , $hp , $mp){ //コンストラクタ(インスタンス化した際の初期値入力設定) $this->name = $name; //作成するオブジェクトの「name」項目に変数「$a」を代入する $this->hp = $hp; //作成するオブジェクトの「hp」項目に変数「$b」を代入する $this->mp = $mp; //作成するオブジェクトの「name」項目に変数「$c」を代入する echo $this->name."さん、この世界にようこそ!<br>"; } public function denote_hp(){ //プレイヤーのHPを表示するメソッド echo $this->name."のHPは".$this->hp."です。<br>"; } public function denote_mp(){ //プレイヤーのMPを表示するメソッド echo $this->name."のMPは".$this->mp."です。<br>"; } } class Copy extends Player{ } $tanaka = new Copy("tanaka" , 50 , 20); //「Copy」クラスから「$tanaka」オブジェクトを作成し、各項目に初期値を設定する $suzuki = new Copy("suzuki" , 75 , 5); //「Copy」クラスから「$suzuki」オブジェクトを作成し、各項目に初期値を設定する $tanaka->denote_hp_pub(); //「$tanaka」のHPをメソッド「denote_hp_pub」で表示する $suzuki->denote_mp_pub(); //「$suzuki」のMPをメソッド「denote_mp_pub」で表示する ?> |
「class Copy extends Player」で「Player」クラスを継承した「Copy」というクラスを作成します。そして「$tanaka」と「$suzuki」に「new Copy()」でオブジェクトを作成します。オブジェクトの作成及び、「$tanaka->denote_hp_pub();」、「$suzuki->denote_mp_pub(); 」 でメソッドを呼び出してみると…
上記の実行結果が得られました。「Copy」クラスに「Player」クラスが継承されている為、「Player」クラスの変数やコンストラクター、メソッドが「Copy」クラスでオブジェクト作成した時でも呼び出せます。
まとめ
- あるクラスから、プロパティやメソッドを引き継いで新しいクラスを作成することをクラスの継承という。
- クラスを引き継いだ新しいクラスを「子クラス」、コピー元のクラスを「親クラス」と呼ぶ
- 「class “継承するクラス名” extends “継承元となるクラス名”」で子クラスを作成することができる