1
考虑下面的例子:斯卡拉:覆盖高清与VAL
abstract class Item {
def price: Double
def description: String
}
class SimpleItem1(override val price: Double, override val description: String) extends Item{}
class SimpleItem2(val price: Double, val description: String) extends Item{}
它成功地编译和两个扩展类具有相同的方法。他们真的是一样的吗?如果不是 - 有什么区别?如果是,请给我解释一下,例如:为什么他们决定'覆盖'在这里是可选的?
很好的答案,除了最后一句话。没有写'override'没有什么好处,它有助于使代码更加清晰和安全,以便将来添加。一些保存的按键不值得担心(你的例子是一个很好的例子,不应该写代码)。 – sschaef
@sschaef - 我认为这是不错的设计,不适合重载的东西,我支持这种说法。我很少必须使用重载,并且我不觉得我错过了任何东西。有像Swing这样的框架可以处理重载,但是一般来说,如果你设计你的类,你应该可以不用它。 –
@ 0__ - 我认为sschaef的意思是 - “每次重写时都应该重写,即使语法允许,也不应该跳过这个单词”。他写这篇文章是因为你最后一句话有点混乱。我个人把它理解为:“当你压倒性的时候,如果可以的话,不要用'重写'这个词,而且语法允许你”。尽管如此,我仍然可能错在谁的意思是什么:)。 – GrayR