parentモジュール - クラスの継承
parentモジュールを使用すると、クラスを継承することができます。
# クラスの継承 package MyClass; use parent 'BaseClass';
上記のサンプルではMyClass
がBaseClass
を継承しています。
BaseClass
は、コンパイル時に、requireを使って読み込まれ、特殊変数@ISAの最後に追加されます。
同一ファイルで定義されたクラスの継承
同一ファイルで定義されたクラスを継承するには-norequire
オプションを使用します。
package Foo; sub exclaim { "I CAN HAS PERL" } package DoesNotLoadFooBar; use parent -norequire, 'Foo', 'Bar';
単一継承と多重継承
Perlは多重継承をサポートしますが、多重継承はモジュール間の継承関係をとても複雑にしてしまいます。ですから、継承は単一継承に限るのがモジュールの関係をシンプルに保つ上でよいとされています。
実際、単一継承でプログラムを組むと、わかりやすく可読性の高いプログラムになります。単一継承でできないことはありませんし、設計もきれいになりますので、ぜひ単一継承でプログラムを作成してみてください。
parentモジュールを使ってクラスを継承する
@ISAを使用したクラスの継承を解説しました。けれども、この方法は何かパッケージ変数を触っているので、ほかの言語で継承の構文を学んだ人から見るとどこか変な感じです。
もうすこし、継承を表現するわかりやすい方法があります。それは、parentモジュールを使用する方法です。