我想知道使用的语义是什么abstract
关键字与 a 组合trait
is.
如果该特征没有定义任何抽象方法,则abstract
关键字不会阻止我创建实例:
scala> abstract trait T
defined trait T
scala> new T{}
res0: java.lang.Object with T = $anon$1@12cd927d
另一方面,如果该特征确实定义了一个抽象方法,我就无法创建一个实例(当然不实现这个方法),无论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
a 前面的关键字trait
有什么好处?
它没有任何效果,特征会自动抽象。
抽象修饰符用于类定义中。这是多余的
对于特征,对于所有其他不完整的类都是强制性的
成员。
http://www.scala-lang.org/docu/files/ScalaReference.pdf http://www.scala-lang.org/docu/files/ScalaReference.pdf
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)