【发布时间】:2012-12-11 21:38:50
【问题描述】:
我注意到有几个关于如何在抽象类和特征之间进行选择的讨论,但似乎没有一个集中在以下点上。让我使用抽象类的一个原因是,它们可以有构造函数参数,而特征不能。但是为什么不如下
trait X {
def haha: Int
}
class Y(val haha: Int) extends X
甚至没有必要提前定义以使一切正常运行(我担心)。抽象类版本是
abstract class X(haha: Int)
class Y(val haha: Int) extends X(haha)
而且我不喜欢抽象类的版本,因为当你多次扩展时,这些构造函数参数无处不在(也许有人告诉我如何避免这种情况?)。
我知道抽象类可以更好地使用 Java 进行插值,并且更符合“is-a”概念。尽管如此,有什么理由我应该在某处使用抽象类吗?谢谢!
【问题讨论】:
标签: scala abstract-class traits