【发布时间】:2011-02-05 21:54:35
【问题描述】:
以下错误信息是什么意思?
无法覆盖具体成员 没有第三个成员 被两者覆盖(这条规则是 旨在防止“意外 覆盖'');
我试图进行可堆叠的特征修改。这是事后的一点,因为我已经有了一个层次结构,并且我正在尝试修改行为而无需重写大量代码。
我有一个名为 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。
现在我想在 Pass1 和 Pass2 中的 onPush 调用之前和之后做一些处理,同时尽量减少对 AbstractProcessor 和 Pass1 和 Pass2 的代码更改。我想创造一个做这样的事情的特征:
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 一起使用,我收到了错误消息。
【问题讨论】: