PHP 継承と多態性を知る。

muroiです。
今日のPHPでは前回のオブジェクトコンポジションの復習と、新たに継承を学習しました。

継承とは

あるクラスのもつメンバ(クラス変数、インスタンス変数、クラスメソッド、インスタンスメソッド)を別なクラスで引き継ぐこと継承といいます。
継承される側のクラスを『スーパークラス』、継承する側のクラスを『サブクラス』といいます。
前回の内容のオブジェクトコンポジションが『has-a関係』、今回学習した継承は『is-a関係』とも言い、この2つが揃って『多態性』を実現する事ができました。
多態性を実現する事ができれば、後から異なる機能を持ったクラスの追加にも柔軟に対応できてすごく便利ですね!

継承のメリット

継承を行う事によりいくつかメリットが出てきます。

  • サブクラスで、フィールドやメソッドの定義を行わずに済む。(スーパークラスのものがそのまま利用できるため)
  • サブラクスで、スーパークラスにないフィールドやメソッドを追加する事ができる。(サブクラス固有の処理を追加する事ができる)
  • サブクラスで、インスタンスメソッドの再定義を行う事ができる。(オーバーライドといい、スーパークラスで宣言されたインスタンスメソッドをサブクラスで上書きして、異なる処理を実現する)

また、今日は継承を利用して作成練習も行いました。
課題は、Studentクラスを継承していくつかのサブクラスを作り、Schoolという学生を管理するクラスを作って、このSchoolというクラスのメソッドを利用して学生情報を表示するというものです。
以下が自分が作ったソースコードとなります。
School.php

前回の研修と同様、後から機能追加をする案も出てきたのですが、この継承とオブジェクトコンポジションを使って書いていたので比較的簡単に対応する事ができました。
今後もいろいろな課題に対応できるようしっかりと身につけていきたいと思います!

—-
(2008/07/14 hirafuji追記)
動画をご覧下さい〜!

1 件のコメント so far »

  1. by スタートアップ研修記 » PHP 継承と多態性を利用したプログラム作成練習, on 07.16.08 @ 5:44 PM

     

    [...] muroiです。 今日のPHPの研修では、前回学習した『継承と多態性を知る』の復習と、いくつかの練習問題を行いました。 [...]

Comment RSS · TrackBack URI

コメントをどうぞ

名前: (Required)

eMail: (Required)

Website:

Comment:

Spam Protection by WP-SpamFree