我们可以使用具有scala特征的新关键字吗

aga*_*n14 0 inheritance scala traits

我到处都读到我们无法实例化特征,但是当我运行这段代码时,它运行良好。我对scala的特性感到困惑,有人可以解释一下。

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"
    }
}
Run Code Online (Sandbox Code Playgroud)

Gal*_*aor 6

您实际上所做的是提供X一个类主体,{ }并创建了一个匿名类内联扩展了特性。另外-该特性的所有成员都有一个具体的实现-这就是它起作用的原因。