Im新的android開發。我想知道爲什麼我們必須在android?中使用@Override註釋前面的每個overriden方法。在常規的java中,這不是必需的。關於@Override註釋的問題
請幫助 感謝
Im新的android開發。我想知道爲什麼我們必須在android?中使用@Override註釋前面的每個overriden方法。在常規的java中,這不是必需的。關於@Override註釋的問題
請幫助 感謝
的@Override
符號是用來使編譯器可以警告你,如果方法簽名是不一樣的超類的方法簽名。它可以警告你有關繁瑣的錯誤,並且它在Android中不是必需的,但在「普通」Java編程和Android編程中都是很好的做法。
如果你在「正常」的Java拼寫錯誤的toString方法,例如public String toString(int n) {...}
並且你有@Override
編譯器會警告你,因爲你不重寫超類中的方法。
因爲這是一個很好的編程習慣。在未使用@Override
的情況下重寫方法會導致未來發現潛在的難以發現的錯誤,如果基本方法的簽名發生變化(我之前浪費了幾個小時的時間)。
這是一個最佳實踐,它是安全的。假設你有一個類:
public class MyClass {
...
...
public void doSomething() {
...
...
}
}
現在假設你擴展它:
public class MyExtendedClass extends MyClass {
...
...
public void doSomthing() {
...
}
}
這段代碼編譯,而是因爲你居然還沒有覆蓋的方法,你就會有問題!請注意拼寫錯誤。現在,如果你有@Override
標註爲:
public class MyExtendedClass extends MyClass {
...
...
@Override
public void doSomthing() {
...
}
}
Java編譯器會抱怨,因爲您要重寫不會在基類中存在的方法。基本上使用@Override
可以讓您在編譯時捕獲這些問題。
這在您重構時特別有用。如果您更改了方法簽名或名稱,但沒有註釋,則某些方法可能會導致難以找到的錯誤(當然,使用現代IDE的許多此類疼痛已得到緩解,但仍然存在)。如果明智地使用@Override
註釋,您現在將得到編譯器錯誤,因此您將能夠在派生類中修復方法簽名。
其實,你不能做「public int toString(){...}」,因爲編譯器會拋出一個錯誤。錯誤是「嘗試使用不兼容的返回類型」。但是,如果你做toString(int i),那麼你的答案是正確的。 – 2011-05-18 18:55:39
@阿米爾:是的,當然不好的例子。我會更正它,謝謝:) – LuckyLuke 2011-05-18 18:59:06