3
下面的代碼片段避免繼承方法斯卡拉
class A {
def foo = "A.foo"
}
trait B {
def foo = "B.foo"
def bar = "B.bar"
}
val x = new A with B
不編譯,因爲
error: overriding method foo in class A of type => java.lang.String;
method foo in trait B of type => java.lang.String needs `override' modifier
然而,我的本意是定義X,這樣:
x.foo => "A.foo"
x.bar => "B.par"
也就是說,我只想要x從B繼承欄,但不是foo。 scala有沒有辦法達到這個目的?
+1這是一個巧妙的技巧... – Russell 2012-04-26 21:36:17
還要注意,雖然它可以很好地與defs一起使用,但vals會變得更加棘手。 – 2012-04-26 21:39:34