我到处都读到我们无法实例化特征,但是当我运行这段代码时,它运行良好。我对斯卡拉特质感到困惑,有人可以解释。
trait X {
def a: Int
def b: String
}
object test {
def main(args: Array[String]) {
new X() {
override def a: Int = 1
override def b: String = "as"
}
}
答案 0 :(得分:6)
您实际上所做的是为X
提供一个类主体{ }
,并创建了一个匿名类内联扩展了该特性。
另外-该特性的所有成员都有一个具体的实现-这就是它起作用的原因。