Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
7
Help us understand the problem. What is going on with this article?
@bossunn24

[PHP] オーバーライドとは。

More than 3 years have passed since last update.

24歳、初心者です。

PHPの基礎から勉強しているのですが、タイトルのような横文字が登場してきました。プログラミングって出てくる単語が横文字ばっかりで、高校時代に読んでいたライトノベルを彷彿とさせてくれるので結構楽しいです(個人的な感想)。その中でも「オーバーライド」って響きは久々に魂にキた・・・ので備忘録代わりに書いておこうと思います。

オーバーライドとは・・・

親クラスで定義されているメソッドを子クラスで同じ名前のメソッドを作って定義し直す(再定義)することです。
例えば

// 親クラス

class Goku {
  public function skill($name, $damage){
    print "名前 = {$name} : ダメージ = {$damage}". '<br>'; 
  }
}

// 子クラス 

class Gohan extends Goku {
  public function skill($name, $damage){
    print "悟飯の必殺技!名前は、{$name}!なんと{$damage}ダメージも敵に与える事ができるんだ!"; 
  }
}

子クラスのskill()メソッドをオーバーライドすることにしました。親クラスでは簡潔な情報のみを表示する冷めたメソッドから,子クラスではコロコロコミックの説明文みたいな情報を表示する熱いメソッドに定義し直すことにしました。

ではメソッドを実行します。

$dragonball = new Goku();
$dragonball->skill('かめはめ波', '500');
$dragonballZ = new Gohan();
$dragonballZ->skill('かめはめ波', '500');

すると結果、

名前 = かめはめ波 : ダメージ = 500
悟飯の必殺技!名前は、かめはめ波!なんと500ダメージも敵に与える事ができるんだ!

となります。最初の一行目が親クラスのskill()、その下が子クラスのskill()となっております。オーバーライドされていますね。

オーバーライドの利点ですが、色々な子クラスを作ってオーバーライドしたメソッドを用意しておけば、様々な状況に対応できるみたいです。

しかしオーバーライドをしてしまうと、同じ名前のメソッドが複数存在することになってしまいます。なんか紛らわしいし、目当てのメソッドを呼び出しそうとしたら違うメソッドを呼び出してしまうかもしれないとか思ってしまわれるかもしれません。しかし心配ご無用。特に変わった処理は必要ありません。上記のように普通にクラスのインスタンスを生成してメソッドを結びつけて呼びだすだけでいいそうです。

参考文献
PHPサーバーサイドプログラミングパーフェクトマスター 
著者 金城 俊哉

7
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
bossunn24
他業界からの転職組です。まだまだ未経験の若輩者ですが、頑張ります。
sportsfield
人材支援会社、株式会社スポーツフィールドのIT・WEB開発部門

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
7
Help us understand the problem. What is going on with this article?