Perl tips series 3
perl OOP 浅尝辄止二
perl中,继承类的实现,如下。
package CD::PIANO;
use base qw(CD);
sub init {
my $self = shift;
$self->SUPER::init('piano song');
$self->{player} = shift;
return $self;
}
sub play {
my $self = shift;
print "Welcome to a wonderful world!\n";
print "Played by $self->{player}\n";
}
1;
- 关键字base,来传达继承于哪个类;
- 这个package的名字叫"CD::PIANO",既反映了继承关系,也同时反映了文件存储的位置,放在了目录CD下面,和目录CD并列的是CD.pm;
- 关键字SUPER,来调用父类的函数;
- 函数print_me的实现在其父类CD中;
- 和其他语言不同,perl的继承类可以没有自己的new函数,把其父类的new函数继承来就可以了;
use FindBin;
use lib "$FindBin::Bin";
use CD::PIANO;
my $piano = CD::PIANO->new;
$piano->init('Someone');
$piano->play;
$piano->print_me;
运行结果如下:
Welcome to a wonderful world!
Played by Someone
music = piano song