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

Dan*_* Wu 3 scala

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

scala> trait A
scala> new A
<console>:9: error: trait A is abstract; cannot be instantiated
              new A
              ^
Run Code Online (Sandbox Code Playgroud)

Ale*_*nov 10

它失败了,因为traits总是按照定义抽象,比如Java接口.

当你写new A {}它时意味着"创建一个匿名类扩展A并创建它的实例".当然,这个匿名类不是抽象的,所以这是有效的.