base - クラスを継承する
baseモジュールを使用すると、クラスを継承することができます。
# クラスの継承 package YourClass; use base 'BaseClass';
継承を行うと基底クラスにあるメソッドをサブクラスで呼び出すことができるようになります。基底クラスのBaseClassでparseというメソッドが定義されていた場合はサブクラスのYourClassでもparseメソッドを呼び出すことができます。
基底クラス ▲ サブクラス ← 基底クラスのメソッド + 自身のメソッドを利用できる
単一継承と多重継承
Perlは多重継承をサポートしますが、多重継承はモジュール間の継承関係をとても複雑にしてしまいます。ですから、継承は単一継承に限るのがモジュールの関係をシンプルに保つ上でよいとされています。
実際、単一継承でプログラムを組むと、わかりやすく可読性の高いプログラムになります。単一継承でできないことはありませんし、設計もきれいになりますので、ぜひ単一継承でプログラムを作成してみてください。
baseモジュールに関するFAQ
Q. parentというモジュールを見たことがあるのですが、baseモジュールと何が異なりますか。
A. parentモジュールはbaseモジュールを簡素にしたものです。役割としては同じものです。parentは5.10.0からコアモジュールになりました。baseモジュールはPerl5.005からコアモジュールです。ポータビリティを考慮して継承を行うときはbaseモジュールが利用されていることが多いと思われます。
Q. baseモジュールで継承する仕組みを教えてください。
A. Perlでは@ISAというパッケージ変数に基底クラスを設定すると継承を行うことができます。baseモジュールはこれをコンパイル時に行っているだけです。次のような実装と同じ意味になります。
# 継承の仕組み package YourClass; BEGIN { our @ISA = ('BaseClass'); }