Perlゼミ

  1. Perl
  2. オブジェクト指向
  3. base

baseモジュールを使ってクラスを継承する

@ISAを使用したクラスの継承を解説しました。けれども、この方法は何かパッケージ変数を触っているので、ほかの言語で継承の構文を学んだ人から見るとどこか変な感じです。

もうすこし、継承を表現するわかりやすい方法があります。それは、baseモジュールを使用する方法です。

baseモジュール

Perlの継承は@ISAを使うよりも、baseモジュールを使うほうが良いです。baseモジュールは内部では、 @ISA を触って同じことをしますが、@ISAを触っていることを隠蔽してくれます。

またコンパイル時に@ISAを操作するので、ひとつのスクリプトにクラスの定義とオブジェクトの生成を書く場合に便利です。

では@ISAを使った継承をbaseを使って書き直してみます。

use strict;
use warnings;

# ボタンクラスを使用する。
my $button = Button->new;
print $button->x;


# コンポーネントクラス
package Component;
sub x { return 5 }

# ボタンクラス
package Button;
# 継承
use base 'Component'; 

sub new { bless {}, 'Button' }

use base と記述して引数に継承したいクラス名を渡します。コンパイル時にuse base が実行されるため

my $button = Button->new;

を上側に書いても問題ありません。ここからのサンプルは、baseモジュールを使って書いていきたいと思います。

Perlの書籍
  • 業務に役立つPerl

    ログ解析など日本語を含むテキスト処理の実践!
    この私、Perlゼミの作者が執筆しています。
    ご購入、口コミ歓迎。
  • Perlの書籍 »
自己紹介
木本裕紀

「こっ、こしゃくな。
このPerオタクめ~!」

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

Youtube

チャンネル登録、いいね、コメント歓迎

kimoto.yuki@gmail.com
応援メッセージ、質問、間違い報告歓迎

木本システム株式会社
ご紹介キャンペーン実施中です。契約金額の10%をご紹介料としてお支払い。

(例)30万円のシステム開発委託契約が、1年続いたら、36万円がもらえる!!!