我正在尝试实现一个 Moose::Role 类,它的行为类似于 Java 中的抽象类。我想在角色中实现一些方法,然后能够在具体类中覆盖这些方法。如果我使用与扩展类时相同的样式尝试此操作,则会出现错误Cannot add an override method if a local method is already present
。这是一个例子:
我的抽象类:
package AbstractClass;
use Moose::Role;
sub my_ac_sub {
my $self = shift;
print "In AbstractClass!\n";
return;
}
1;
我的具体课程:
package Class;
use Moose;
with 'AbstractClass';
override 'my_ac_sub' => sub {
my $self = shift;
super;
print "In Class!\n";
return;
};
__PACKAGE__->meta->make_immutable;
1;
接着:
use Class;
my $class = Class->new;
$class->my_ac_sub;
难道我做错了什么?我想要完成的事情应该以不同的方式完成吗?我想做的事根本不应该做吗?