PHPコーディング

オーバーライドと親クラスのメソッド実行

2013年01月18日
親クラス
 子クラス1 親クラスを継承
 子クラス2 親クラスを継承
があるとします。

子クラス1
 日時取得
 ファイル名に子クラス1と設定
子クラス2
 日時取得
 ファイル名に子クラス2と設定
と実行したいとします。

この場合、共通している日時取得は親クラスでやりたくなります。

これらの処理を、クラス読み込み時に行いたかったので、
親クラスの【__construct】関数に日時処理を、
それぞれの子クラスの【__construct】にファイル名の設定処理を
書きました。

ところが、関数が同じなので、親クラスの【__construct】は子クラスの【__construct】で上書きされてしまい、親クラスの【__construct】に書いた日時処理は実行されません。
これをオーバーライドと言います。

では、親クラスの【__construct】に書いた日時取得処理を実行するにはどうすればよいか。
子クラスの【__construct】に【parent::__construct();】の処理を書けば実行されます。

親クラスの__construct
 日時取得
   子クラス1の__construct
    parent::__construct();
    ファイル名に子クラス1と設定
   子クラス2 __construct
    parent::__construct();
    ファイル名に子クラス1と設定

これで目的が達成されます。子クラスが2つくらいなら、子クラスの方へ書いてしまったほうが分かりやすいかもしれません。
ですが、子の数が増えると親クラスで共通に処理しておかないと、メンテナンスが大変になります。

PHPのオブジェクト指向入門
にとても分かりやすい記事があります。
コメントの書き込み
コメント
2018年07月
            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
先月
来月
カテゴリ
検索
関連サイト
プロフィール
【ネットネーム】
みゅー

キャラクター by ツカエルサイト


【趣味】
・プログラミング
・写真
・楽器演奏
・手芸
・日曜大工
・家の中の不便を便利に
・考える
・自然科学
・猫と戯れる
・ジグソーパズル

【仕事】
・派遣社員でSE・PGやっていました。次の良い仕事がみつからないので、ビジネスへ注力しようと思っています。
・経験言語:VB6、VB.NET、PHP、Perl、JAVA、Oracle、SQLServer、PostgreSQL



【名前】
アン(足)

2014年4月22日生まれ 女の子
あだ名は くノ一
普段は普通にしゃべりますが、興奮すると『ニャ』を連発します

【趣味】
・狩
・ご飯を食べる
・ママのお手伝い

【仕事】
ママのビジネスの看板招き猫
ママの代わりにPC入力
仕事中のママの右腕を温める
ママに心配をかける
いろんな事をしでかしてママを退屈させない

RSSフィード