2015-07-10 83 views
1

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

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


我的猜测是,我们并没有压倒一切,因为在我们重写它之前没有其他的实现,而只是添加@override,因为我们正在实现一个接口。无论如何,今天我被问到这个具体问题,并不确定。Java Comprable重写还是不重写compareTo?

+1

['Comparable'](http://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html)接口定义了您需要实现的合约,其中包括' compareTo'方法。 '@ Override'注解是一个编译时检查,以确保你的意图(你认为你重写的方法)符合实际(可以被覆盖)。例如,如果你不小心调用了compareto方法,你会得到两个错误,一个是不符合接口的合约要求,另一个是因为编译器无法在类层次结构中找到指定的方法 – MadProgrammer

+0

你的问题是不清楚!你想知道谁设计了API吗?或@override的用法是什么? –

+0

通过添加@override,我们是否重写compareTo的默认实现? Object(父类)类中是否存在这样的默认实现? – apadana

回答

2

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

对于@Override注释的这种用法有点惊讶。如果有一个@Implement注释表明您打算实现接口方法,读者可能会更清楚。

但是,如果从超类中覆盖抽象方法会产生混淆;在这种情况下应该使用哪个注释。为了简单起见,此目的只有一个注释:@Override

+0

谢谢。它真的清除了我的想法。很好解释。 – apadana