親クラスの書き方
クラスの継承には
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に継承されているのがわかります。