今時風の継承
PerlでのOOPで古くないと思われる実装を調べてみました。
こんな感じかなー。問題なく継承できてるはず。
package Org::Zeon::MS::Dom; use strict; use warnings; use utf8; # Cloneを継承 use parent qw(Clone); sub new { my $class = shift; $class = ref($class) || $class; my $self = { @:: }; bless( $self, $class); return $self; } sub name { return "Dom"; } sub affiliation { return "Zeon"; } package Org::Zeon::MS::RickDom; use strict; use warnings; use utf8; # DomとCloneを継承してRickDomを作る use parent qw(Org::Zeon::MS::Dom Clone); sub new { my $class = shift; my $self = $class->SUPER::new(@::); return $self; } sub name { return "RickDom"; } 1; __END__
っで、下のコードを実行するとコメント通りの結果が表示されます。
package main; use strict; use warnings; use utf8; use Org::Zeon::MS::Dom; our $dom = new Org_Zeon_MS_Dom(); # Dom(Zeon)と表示 print $dom->name."(".$dom->affiliation.")\n"; our $rickdom = new Org_Zeon_MS_RickDom(); # RickDom(Zeon)と表示 print $rickdom->name."(".$rickdom->affiliation.")\n";