gpt4 book ai didi

scala - Scala 中抽象特征的语义

转载 作者:行者123 更新时间:2023-12-03 14:38:55 24 4
gpt4 key购买 nike

我想知道使用 abstract 的语义是什么关键字与 trait 结合使用是。

如果 trait 没有定义任何抽象方法,则 abstract关键字不会阻止我创建实例:

scala> abstract trait T
defined trait T

scala> new T{}
res0: java.lang.Object with T = $anon$1@12cd927d

另一方面,如果 trait 确实定义了一个抽象方法,则无论 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 trait前面的关键字有什么好处?

最佳答案

它没有效果,特征是自动抽象的。

The abstract modifier is used in class definitions. It is redundant for traits, and mandatory for all other classes which have incomplete members.



http://www.scala-lang.org/docu/files/ScalaReference.pdf

关于scala - Scala 中抽象特征的语义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com