在抽象方法的实现上使用override关键字

时间:2011-04-13 00:28:10

标签: scala

在实现traits中定义的抽象方法时,使用override关键字是一种好习惯吗?

trait Tooth {
  def ache(): Unit
}

class Molar extends Tooth {
  override def ache(): Unit = {}
}

在上面的例子中,我理解override关键字是可选的;但这是可取的吗?我应该选择简洁与安全权衡的哪一方?

4 个答案:

答案 0 :(得分:27)

override在那里为你做了一件事:当删除Tooth.ache而不是稍后的实现时,你会遇到编译器错误。特别是,这迫使Tooth(由您自己或其他人编写)的实现在某种意义上与Tooth“接近”,即被弃用的方法消失(或至少被重新考虑)。

这可能是也可能不是。

答案 1 :(得分:15)

就个人而言,当我看到

override def whatever()

我认为的第一件事是,“我想知道以前应该如何表现?”

由于这是一个无用的想法,如果它是一个抽象的方法,我发现它更简洁更安全,让它关闭。

答案 2 :(得分:12)

在实现抽象方法时,我通常不会使用override。它没有错,但多余,我更喜欢在保持清晰度的同时保持我的代码尽可能短。但我意识到这不是一个明确的案例。

答案 3 :(得分:8)

我总是使用它来表示在超类上声明的成员,即使是抽象的。