9章 Perlでオブジェクト指向 継承の書き方

親クラスの書き方

クラスの継承には
use base qw(  );
を使います。

親クラス ファイル名:Human.pm

package Human;

use strict;

###########
sub new
{
my $class = shift;
my $args = shift;

my $self = {};
$self->{a} = undef; # member data
$self->{b} = undef; # member data
bless($self, $class);
return $self;
}
###############
sub set
{
my ($self,$x, $y)  = @_ ;
$self->{a} = $x;
$self->{b} = $y;
}
###############
sub calc2
{
my ($self)  = @_ ;

my $c = $self->{a} + $self->{b} ;
print “Human->calc2 = $c \n”;
}
##############
1;

子クラスの書き方

子クラス ファイル名:Student.pm

package Student;

use strict;

# 1つだけ(StudentはHumanだけ)を継承する場合に使えるテクニック
use base qw( Human );
###########
sub new
{
my $class = shift;
my $self = Human->new();
bless($self, $class);
return $self;
}
##############
1;

実行結果:1

実行ファイル名:test1.pl

use strict;
use Data::Dumper;
use Student;

my $man = Student->new();
$man->set( 1 ,2 );
$man->calc2( );

実行結果:

>perl test1.pl

Human->calc2 = 3

Humanのメンバ関数のset(),calc2()も、
メンバーデータ$a,$bも
Studentに継承されているのがわかります。

タイトルとURLをコピーしました