为什么我不能实例化特征?编译器抱怨特征是抽象的,但我在特征中没有任何抽象的方法或字段。
scala> trait A
scala> new A
<console>:9: error: trait A is abstract; cannot be instantiated
new A
^
答案 0 :(得分:10)
它失败了,因为traits总是按照定义抽象,就像Java接口一样。
当你写new A {}
时,它意味着&#34;创建一个扩展A
的匿名类并创建它的实例&#34;。这个匿名类当然不是抽象的,所以这很有用。