[英]Question about @Override annotation
我是android開發的新手。 我想知道為什么我們必須在android中的每個重寫方法前加上@Override注釋? 在常規Java中,這不是必需的。
請幫忙謝謝
使用@Override
表示法,以便如果方法簽名與超類方法簽名不同,則編譯器可以警告您。 它可以警告您乏味的錯誤,並且在Android中不是必需的,但是在“常規” Java編程和Android編程中都是好的做法。
如果您在“普通” Java中拼寫了toString方法,例如public String toString(int n) {...}
並且您使用了@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
可使您在編譯時捕獲此類問題。
重構時,此功能特別有用。 如果您更改方法簽名或名稱,但沒有@Override
批注,則某些方法可能會@Override
,從而導致難以發現的錯誤(當然,對於現代IDE來說,可以減輕很多這種麻煩,但是,仍然)。 如果您明智地使用@Override
批注,則現在會遇到編譯器錯誤,因此可以在派生類中修復方法簽名。
因為這是一種好的編程習慣。 如果基本方法的簽名發生更改,則在不使用@Override
情況下覆蓋方法會在將來導致潛在的難以發現的錯誤(我之前在此類錯誤上已經浪費了數小時)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.