实例化混合特征正在编译,而单个特征则不是

时间:2014-01-14 15:55:47

标签: scala

我有两个特质

trait Person
trait Food

为什么要编译:

val pf = new Person with Food //OK

这不是

val p = new Person //result  error: trait Person is abstract; cannot be instantiated

1 个答案:

答案 0 :(得分:1)

根据定义,特征是抽象的(不可实例化的)。即使它们已完全实现,也可能无法实例化。正如senia在评论中所述,您可以从完全实现的特征中获取匿名类,如下所示:

trait T1
val t1 = new T1 {}