Parent::call_foo() が呼び出されると、$self が祝福された親であるか祝福された子であるかに関係なく、また Child が foo() をオーバーロードしているという事実に関係なく、常に Parent::foo() を呼び出すようにします。
このコードは次を出力します。
parent foo
parent call_foo, parent foo
child foo
child call_foo, parent call_foo, child foo
しかし、私はそれを印刷したい:(最後の行の親foo)
parent foo
parent call_foo, parent foo
child foo
child call_foo, parent call_foo, parent foo
-
use Parent;
use Child;
my $par = Parent->new();
my $chd = Child->new();
$par->foo();
$par->call_foo();
$chd->foo();
$chd->call_foo();
-
package Parent;
sub new {
my $class = shift;
return bless( {}, $class );
}
sub foo {
print "parent foo\n";
}
sub call_foo {
my $self = shift;
print "parent call_foo, ";
$self->foo();
}
1;
-
package Child;
use base qw(Parent);
sub foo {
print "child foo\n";
}
sub call_foo {
my $self = shift;
print "child call_foo, ";
$self->SUPER::call_foo();
}
1;