【发布时间】:2017-10-12 00:40:17
【问题描述】:
我正在使用 Scala,想知道为什么这段代码有效。
trait Base {
def foo(x: Int): Int
}
trait A extends Base {
def fooA(x: Int): Int = {
foo(x)
}
}
class Impl extends Base with A {
override def foo(x: Int): Int = x
}
val a = new Impl
a.fooA(10)
a.fooA(10) 的结果是 10。
然而,在 trait A 中,方法 fooA 使用的是在 Impl 类中实现的 foo 方法。
同样,Impl 类扩展了类 A(with A 在类 Impl 的声明中)。
不是圆形的吗?
怎么可能?
谢谢。
【问题讨论】:
标签: scala inheritance methods overriding traits