假设,您有一个带有 selftype 的特征,并且您已经覆盖了其中一种方法:
trait A {
def foo() { println("A") }
}
trait B { this: A =>
override def foo() {
println("B")
}
}
object Test {
def main (args: Array[String]) {
val b = new A with B {}
b.foo()
}
}
到目前为止一切顺利,它编译并在输出中生成“B”。但是我如何调用“阴影”方法A
来做这样的事情:
trait A {
def foo() { println("Hello, ") }
}
trait B { this: A =>
override def foo() {
//here I'd like to do something like super.foo()
println("world!")
}
}
object Test {
def main (args: Array[String]) {
val b = new A with B {}
b.foo() //Should print "Hello, world!"
}
}
甚至可以调用 overridenfoo
吗?或者我应该更喜欢继承而不是 selftype 来实现这一点?