次のエラーメッセージはどういう意味ですか?
両方によってオーバーライドされる3番目のメンバーなしで具象メンバーをオーバーライドすることはできません(このルールは、「偶発的なオーバーライド」を防ぐように設計されています);
私は積み重ね可能な特性の変更を行おうとしていました。私はすでに階層を設定していて、多くのコードを書き直さなくても動作を変更しようとしているので、事後少しです。
次のような抽象メソッドを定義するAbstractProcessorという基本クラスがあります。
abstract class AbstractProcessor {
def onPush(i:Info): Unit
}
さまざまなonPush動作を実装するために、いくつかの既存の特性があります。
trait Pass1 {
def onPush(i:Info): Unit = { /* stuff */ }
}
trait Pass2 {
def onPush(i:Info): Unit = { /* stuff */ }
}
new AbstractProcessor with Pass1
だから私はまたはを使用することができますnew AbstractProcessor with Pass2
。
ここで、AbstractProcessorとPass1およびPass2へのコード変更を最小限に抑えながら、Pass1およびPass2でのonPush呼び出しの前後にいくつかの処理を実行したいと思います。私はこのようなことをする特性を作成することを考えました:
trait Custom extends AbstractProcessor {
abstract override def onPush(i:Info): Unit = {
// do stuff before
super.onPush(i)
// do stuff after
}
}
そしてそれを一緒に使用するとnew AbstractProcessor with Pass1 with Custom
、そのエラーメッセージが表示されました。