在Scala中使用类值覆盖特征函数的目的是什么?

时间:2015-07-29 04:08:01

标签: scala class override traits

我是Scala的新手。我只是想知道为什么我们有时候,尤其是在Scala API中,使用类值覆盖特征函数,如下例所示:

sealed trait Amount {
  def amount: Double
}

case class Percentage(amount: Double) extends Amount {
  override def toString = s"$amount%"
}

1 个答案:

答案 0 :(得分:0)

为什么不呢?

特征或超类中有def,因为它允许继承类/特征中的不同实现;允许用val覆盖,否则你必须写

case class Percentage(_amount: Double) extends Amount {
  def amount = _amount
  override def toString = s"$amount%"
}

这种情况经常发生,导致许多无用的代码。