为什么你不能在scala中实例化一个特征?

时间:2014-06-14 04:41:26

标签: scala

为什么我不能实例化特征?编译器抱怨特征是抽象的,但我在特征中没有任何抽象的方法或字段。

scala> trait A
scala> new A
<console>:9: error: trait A is abstract; cannot be instantiated
              new A
              ^

1 个答案:

答案 0 :(得分:10)

它失败了,因为traits总是按照定义抽象,就像Java接口一样。

当你写new A {}时,它意味着&#34;创建一个扩展A的匿名类并创建它的实例&#34;。这个匿名类当然不是抽象的,所以这很有用。