継承下調べ

結構多岐にわたる.ピックアップが難しい.というかオブジェクト指向Perlそのままになってしまう危険性あり.というかオブジェクト指向Perl読むのは勉強になるな

Perlにおける継承とは

  • メソッドの継承のみ
  • 実際にはオブジェクトが属するクラスで要求されたメソッドが見つからないときに,継承するクラスから検索する仕組み
  • 属性の直接継承はしない
  • コンストラクタ・デストラクタの階層的呼び出しはしない

継承の仕方

  • 配列@ISAを使う(読み方はイズア)
  • 現在(5.005以降)はbaseプラグマを使用する
  • 最初に宣言する分には使い方は変わらない
  • コンパイル時の継承の機構(とか書いてあったような.仮)→PBPを見ろ→ぢぶん
  • 複数のクラスから継承するには複数のクラス名を記述すればよい(多重継承)

継承の例

package PerlHacker;
use base qw( Programmer Obfuscator );

パールハッカは,プログラマ・オブファスケータを継承する

package Programmer;
use base qw( Coder Documenter );

プログラマは,コーダ・ドキュメンタを継承する

メソッド検索の順番

  • 深さ優先(左端の先祖クラスが優先される)
  • 図がほしい

その他の継承に関する機構

  • UNIVERSAL(親クラスからメソッドが見つからなかった場合に呼び出される.厳密には違うが祖先クラスであるといえる)
  • 擬似パッケージSUPER(現在のクラスの親クラスを指す.継承と同様の検索を行う)

(まだまだ途中)

オブジェクト指向Perlを踏襲した形になってる,まとまってて参考になる