JDK 6 對 @Override 語義進行關鍵擴展:**實現接口方法現在也被視為 Override**,這解決了 JDK 5 的長期痛點。
public interface IChild { void interfaceMethod(); }
public class Parent { public void parentMethod() {} }
public class Child extends Parent implements IChild {
@Override public void parentMethod() {} // 父類方法,JDK 5/6 均通過
@Override public void interfaceMethod() {} // 接口方法,JDK 5 報錯,JDK 6 通過
}
| 場景 | JDK 5 | JDK 6+ |
|---|---|---|
| 覆寫父類方法 | ✅ 通過 | ✅ 通過 |
| 實現接口方法 | ❌ 編譯錯誤: "方法未覆蓋其父類的方法" | ✅ 通過 |
| 實現抽象類抽象方法 | ❌ 同接口 | ✅ 通過 |
JDK 5/6 官方 Javadoc 完全一致:
Indicates that a method declaration is intended to override a method declaration in a superclass...
但 JDK 6 行為已擴展至接口,**文檔未同步更新**屬於已知疏漏。
從多態本質看:
所有覆寫父類方法、實現接口/抽象類方法,均建議加 @Override。現代 IDE (IntelliJ IDEA, Eclipse) 已默認自動添加。