2015-07-10 65 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