Java の抽象クラスのように動作する Moose::Role クラスを実装しようとしています。ロールにいくつかのメソッドを実装したいのですが、具体的なクラスでそれらのメソッドをオーバーライドする機能が必要です。クラスを拡張するときに機能するのと同じスタイルを使用してこれを試みると、エラーが発生します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;
私は何か間違ったことをしていますか?私が達成しようとしていることは、別の方法で行われるべきですか? 私がやろうとしていることは、まったく行われるべきではありませんか?