Что означает следующее сообщение об ошибке?
не может переопределить конкретный элемент
без третьего члена это
отменяется обоими (это правило
предназначен для предотвращения `` случайного
Переопределение '');
Я пытался делать модифицируемые черты. Это немного по факту, поскольку у меня уже есть иерархия, и я пытаюсь изменить поведение без необходимости переписывать много кода.
У меня есть базовый класс с именем 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
.
Теперь я хотел бы выполнить некоторую обработку до и после вызова onPush в Pass1 и Pass2, одновременно сводя к минимуму изменения кода для 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
, и я получил это сообщение об ошибке.