以下错误消息是什么意思?
无法覆盖具体成员
没有第三位成员
被两者覆盖(此规则是
旨在防止``意外
覆盖'');
我正在尝试进行可堆叠的特征修改。由于我已经有了一个层次结构,因此我在不修改大量代码的情况下尝试修改其行为,因此需要一点时间。
我有一个名为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
一起使用,我得到了该错误消息。 最佳答案
问题是AbstractProcessor.onPush
和Pass1.onPush
之间存在歧义。后者不会覆盖前者,因为Pass1
不会扩展AbstractProcessor
。
如果您将Pass1
和Pass2
扩展为AbstractProcessor
,则此问题已解决。