【PHP】オーバーライドとは? – スーパークラスのメソッドをサブクラスで再定義する

クラス継承ではオーバーライドと呼ばれる仕組みがあります。

オーバーライドはサブクラスでスーパークラスのメソッドを再定義することができます。

ここでは初心者向けにオーバーライドを解説します。

★ 目的

  • オーバーライドを理解する。
  • オーバーライドを使えるようになる。

オーバーライドとは

オーバーライドはクラスの継承を使用した際に、サブクラスでスーパークラスのメソッドを再定義する方法です。

スーパークラスで定義されているメソッドと同じ名前、同じ引数のメソッドをサブクラスで記述することで再定義できます。

サンプルコード

オーバーライドを使用したサンプルコードをご覧ください。

ソースコード

<?php

// クラス定義(サブクラス)
class Person {
    
    // 名前
    public $name = 'Watanabe You';
    
    // プロフィールを出力する
    public function profile() {
        echo "名前 : ".$this->name."\n";
    }
    
}

// クラス定義(スーパークラス)

class Teacher extends Person {
    
    // 担当科目
    public $subject = '体育';
    
    // 教師プロフィールを出力する
    public function profile() {
        echo $this->subject."教師 : ".$this->name."\n";
    }
    
}

// インスタンスの生成
$watanabe = new Teacher();

// プロフィールを出力
$watanabe->profile();

?>

実行結果

体育教師 : Watanabe You

このコードの概要は次のようになります。

行数内容
3〜14Personクラスの定義。
16~27Teacherクラスの定義(Personクラスを継承)。
30Teacherクラスのインスタンスを生成し、$watanabeに代入。
33$watanabeのprofileメソッドを呼び出し。

Personクラスでprofileメソッド定義しており、Teacherクラスでもprofileメソッドを定義しています。

このようにスーパークラスのメソッド(メソッド名・引数)と同じメソッドをサブクラスで定義することで、オーバーライドすることができます。

実行結果からTeacherクラスのメソッドが実行されていることが分かります。

まとめ

オーバーライドはサブクラスでスーパークラスのメソッドを再定義する方法です。

プログラミングでは暫し使われる方法なので、是非習得してきましょう。