我创建了这个小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)行看起来很好.
这怎么可能?
是的,你是正确的,一个特质不能Scala.A特质被实例化不能被实例化,只能混合在一起.你需要一个类实例化,当你使用"与移动硬盘的新的作家",也因此创建一个匿名类的instantiatation看起来很好,并没有给出任何错误.你得到第二行的错误,因为它只是一个特征,因此无法实例化.
| 归档时间: |
|
| 查看次数: |
76 次 |
| 最近记录: |