我想知道使用abstract
关键字与trait
组合的语义是什么。斯卡拉抽象性状的语义
如果性状没有定义任何抽象方法,在abstract
关键字不会阻止我创建一个实例:
scala> abstract trait T
defined trait T
scala> new T{}
res0: java.lang.Object with T = [email protected]
在另一方面,如果性状确实定义了一个抽象的方法,我不能创建一个实例(没有实现,当然这种方法),无论是否abstract
关键字存在与否:
scala> abstract trait T { def foo : Unit }
defined trait T
scala> new T{}
<console>:9: error: object creation impossible, since method foo in trait T of type => Unit is not defined
new T{}
^
scala> trait T { def foo : Unit }
defined trait T
scala> new T{}
<console>:9: error: object creation impossible, since method foo in trait T of type => Unit is not defined
new T{}
^
那么,什么是一个前面的abstract
关键字210有用吗?
您无法创建特质实例。当你说'新型T {}'你创建一个匿名对象的特点T. – sschaef 2012-02-19 13:27:12