2009-02-18 75 views

回答

47

你描述,@Override創建一個編譯時檢查一個方法是否被覆蓋。這對確保您在嘗試覆蓋時沒有愚蠢的簽名問題非常有用。

例如,我已經看到了以下錯誤:

public class Foo { 
    private String id; 
    public boolean equals(Foo f) { return id.equals(f.id);} 
} 

該類編譯如下寫的,但添加@Override標籤equals方法會導致編譯錯誤,因爲它沒有覆蓋equals方法對象。這是一個簡單的錯誤,但它可以逃脫即使是經驗豐富的開發人員的眼睛

21

它不僅使編譯器檢查 - 雖然這將足以使其有用;它也記錄了開發者的意圖。例如,如果你重寫了一個方法,但是沒有從類型本身的任何地方使用它,稍後有人來到代碼中可能會奇怪爲什麼它在那裏。註釋解釋了它的目的。

+2

也廣泛回答我不知道當你回答這個問題時,你的聲望點是什麼。 – 2016-07-23 01:27:52

+0

@OmarTariq:粗略猜測,我懷疑大約有50K。 – 2016-07-23 01:36:28

2

沒了 - 但它也提高了可讀性(即除任何指示你的IDE使用,它可以很容易地發現,一個方法覆蓋的聲明在超)

10

不,你幾乎釘上了它。

@Override告訴編譯器你意圖:如果標籤的方法@Override,你打算覆蓋從超類的東西(或接口,Java 6中)。一個好的IDE將有助於標記任何覆蓋方法而沒有@Override的方法,所以這兩者的結合將有助於確保你正在做你想做的事情。