Scala Traits如何表现?

Giu*_*iti 0 scala traits

我创建了这个小Scala示例,以了解更好的特征.

trait Writer {
  def write(value: Int): Unit = {
    print("Writer")
  }
}

trait Hdd extends Writer {
  override def write(value: Int): Unit = {
    print("Hdd")
  }
}

trait File extends Writer {
  override def write(value: Int): Unit = {
    print("File")
  }
}

class TestClass extends App {
  (1)   val myWriter = new Writer with Hdd   // This line looks fine
  (2)   val myNewWriter = new Writer         // This line fail
}
Run Code Online (Sandbox Code Playgroud)

根据我的理解,不可能实例化Trait,因此第(2)行失败了.

但由于某种原因,我无法理解,第(1)行看起来很好.

这怎么可能?

Sak*_*lya 6

是的,你是正确的,一个特质不能Scala.A特质被实例化不能被实例化,只能混合在一起.你需要一个类实例化,当你使用"与移动硬盘的新的作家",也因此创建一个匿名类的instantiatation看起来很好,并没有给出任何错误.你得到第二行的错误,因为它只是一个特征,因此无法实例化.