Scala特质如何表现?
为了更好地理解特性,我创建了这个小Scala示例Scala特质如何表现?,scala,traits,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:
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
}
在我的理解中,不可能实例化一个特征,因此第2行失败了
但由于某种我无法理解的原因,第1行看起来不错
如何做到这一点?试试:
val myWriter = new Writer {}
我想它需要一个实现,即使这个实现是空的是的,你是对的,一个特性不能在Scala中实例化。一个特性不能实例化,只能在Scala中混合。您需要一个类进行实例化,当您将new writer与Hdd一起使用时,它会创建一个匿名类,因此您的实例化看起来很好,不会给出任何错误。第二行出现错误,因为这只是一个特征,因此无法实例化。当您添加{},它创建了一个匿名类。因此实例化很有效。太好了。谢谢你的帮助