2011-12-20 49 views
1

可能重複:
When do you use Java's @Override annotation and why?是否必須使用@Override註釋繼承的方法?

新手問題 - 我在寫我的第一個Android應用(其我的第二個Java應用程序)。我注意到,在例子中onCreate()方法有@Override註釋,但我沒有使用該註釋,它似乎工作正常。

使用@Override註釋還是我爲自己設置問題是否是一個好習慣。那麼其他遺傳方法如何 - 等?

+4

http://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why – 2011-12-20 15:49:28

回答

5

@Override批註允許編譯器確保您實際覆蓋方法或實現接口方法(Java 6+)。這可以避免一類簡單的錯誤,例如搞砸方法簽名,而不是實際覆蓋你的想法。

這不是強制性的,但它是一個好主意,並且是編譯器的免費幫助。

9

這是唯一的好做法,這

  • 幫助開發者瞭解哪些方法重寫
  • 讓編譯器檢查簽名是符合的覆蓋方法
+0

特別針對第二點+1。但不要強調第一點,因爲它不是強制性的:任何好的IDE(Eclipse,IntelliJ)都會向您顯示獨立於@Override註釋的重寫方法。 – Guillaume 2011-12-20 15:54:32

1

我認爲這是不是只是一個很好的做法,但一個非常好的做法。 除了對程序員提醒之外,它還可以幫助您不要在程序中留下死去的代碼,並且經常避免愚蠢的錯誤。

例如,如果您覆蓋您的基類的方法foo(),然後從基類中刪除此方法。如果您不使用@Override註釋,則有可能無法再訪問的代碼仍然存在於子類中。但是,如果您確實使用@Override,您會收到彙編錯誤,表示您必須對代碼執行某些操作。

1

如果你真的是一個新手,你必須瞭解編譯時(當你編譯你的源代碼)和運行時(當你運行你編譯的類時)。

假設,您需要重寫某些方法,但是重寫您給出錯誤singnature的方法(與原始方法不同)。

現在,在這種情況下,如果已經使用了那個@Override註解,那麼編譯器會告訴你實際上並沒有重寫該方法,即使你這麼想。

但是,如果您不使用該註釋,那麼它將編譯並且最終結果是運行時中的一些錯誤。

相關問題