Perlゼミ

  1. Perl
  2. モジュール
  3. here

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');
}
Perlの書籍
  • 初めてのPerl 第7版

    Perl入門 定番の一冊
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
  • 詳説 正規表現

    正規表現の詳細な解説
  • Perlの書籍販売 14冊 »
自己紹介
木本裕紀(きもとゆうき)

Twitter

フォロー、いいね、リツート、コメント歓迎

Youtube

チャンネル登録、いいね、コメント歓迎
Perlの求人広告募集中