【问题标题】:Java Comprable overriding or not overriding compareTo? [duplicate]Java Comprable覆盖还是不覆盖compareTo? [复制]
【发布时间】:2015-07-10 01:44:33
【问题描述】:

在实现类的可比较接口时,我们是否覆盖了 compareTo 方法?

如果是,谁最初定义了我们覆盖它的 compareTo 方法?

我的猜测是,在我们覆盖它之前没有其他实现的意义上,我们并没有覆盖它,而是只添加@override,因为我们正在实现一个接口。无论如何,今天我被具体询问了这个问题,并且不确定。

【问题讨论】:

  • Comparable 接口定义了你需要实现的合约,其中包括compareTo 方法。 @Override 注释是一个编译时检查,以确保您的意图(您认为您正在覆盖的方法)符合现实(可以覆盖什么)。例如,如果你不小心调用了方法compareto,你会得到两个错误,一个是因为不符合接口的约定要求,一个是因为编译器在类层次结构中找不到命名的方法
  • 你的问题不清楚!你想知道是谁设计了 API 吗?或者@override 有什么用?
  • 通过添加@override,我们是否覆盖了 compareTo 的默认实现? Object(父)类中是否有这样的默认实现?
  • 没有。使用 @Override 注释在某种程度上是可选的(尽管推荐)。真正重要的是你的方法的实现。

标签: java


【解决方案1】:

您的猜测是正确的,@Override 注释可能意味着您打算覆盖超类中的方法,或者您打算实现接口中的方法。

@Override 注释的这种用法感到有点惊讶是合乎逻辑的。如果有一个@Implement 注释表明您打算实现一个接口方法,那么读者可能会更清楚。

但是,从超类中重写抽象方法会让人感到困惑;在这种情况下您应该使用哪个注释。为简单起见,这里只有一个注解:@Override

【讨论】:

  • 谢谢。它真的让我头脑清醒。解释得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多