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

时间:2019-06-20 07:33:57

标签: scala inheritance traits

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

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"
    }
}

1 个答案:

答案 0 :(得分:6)

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