【问题标题】:Why Override an Interface method? [duplicate]为什么要重写接口方法? [复制]
【发布时间】:2019-02-11 07:38:58
【问题描述】:

当扩展一个抽象类时,我理解为什么你必须重写一些方法。但是当涉及到接口时,我不明白为什么必须这样做。如果一个接口的所有方法都必须实现,那么重写它们有什么用呢?

我说的是@Override 注释。

【问题讨论】:

  • 你说的是@Override注解吗?或者是“覆盖”与“实施”的措辞让您感到困惑?
  • 我说的是@Override注解
  • 你应该检查这个 SO 的页面:stackoverflow.com/questions/212614/…

标签: java java-8 interface overriding


【解决方案1】:

使用@Override 完全是可选的。你不必使用它。如果你这样做了,在实现接口时使用@Override 与在扩展抽象类时使用它或多或少具有相同的推理。简而言之,它可以防止愚蠢的错误——如果一个接口被改变,它会迫使你相应地改变你的类,而不是仅仅添加你突然需要实现的“新”方法。

【讨论】:

  • 我明白这一点。但是如果有一个未实现的方法,编译器不会给出错误,在这种情况下它会起到检查的作用。
  • @MphiweNtuli 当然,这与扩展抽象类的方式相同。
  • @MphiweNtuli 当你忘记实现一个方法时编译器会告诉你,但它不会告诉你什么时候应该实现一个方法的方法实际上没有实现。您似乎想用 n 实际方法实现 n 接口方法,因此会发现不匹配。但是如果你有 n 个方法,但接口实际上有 n-1 个方法怎么办?你已经实现了所有的方法,但是一个方法没有做它应该做的事情。使用@Override,编译器会告诉你。
  • @Holger 这实际上是有道理的。我测试了它,它的行为是这样的。然后我将继续使用 Override
猜你喜欢
  • 1970-01-01
  • 2021-02-08
  • 2012-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-24
  • 2012-10-19
相关资源
最近更新 更多