0
我有2個特徵和1個類。無法重寫Scala中的方法
在特質A
,這兩種方法A1
和A2
需要執行
scala> trait A {
| def A1
| def A2
| }
defined trait A
在特質B
,即使A1
在這裏實現,它需要是抽象的,因爲它使用的超級,它仍然需要實例類實現。 A2
實現
scala> trait B extends A {
| abstract override def A1 = {
| super.A1
| }
| def A2 = println("B")
| }
defined trait B
現在我有一個類C
定義A1
(不涉及以前的性狀)
scala> class C {
| def A1 = println("C")
| }
defined class C
現在我要創建的對象C1
這應該是C
型的,但我想一些功能B
以及(如A2
)。但它不編譯。我如何使用A2
from B
in C
?我認爲它會工作,因爲C
已經實施A1
。
scala> val c1 = new C with B
<console>:13: error: overriding method A1 in class C of type => Unit;
method A1 in trait B of type => Unit cannot override a concrete member without a third member that's overridden by both (this rule is designed to prevent ``accidental overrides'')
val c1 = new C with B
^