Java @Override註解 寫與不寫的區別
阿新 • • 發佈:2018-12-30
/* 一般來說,寫與不寫沒什麼區別,JVM可以自識別 寫的情況下:即說明子類要覆蓋基類的方法,基類必須存在方法 (控制型別public,protected,返回值,引數列表型別)與子類方法完成一致的方法,否則會報錯(找不到被Override的方法)。 在不寫@Override註解的情況下,當基類存在與子類各種條件都符合的方法時實現覆蓋;如果條件不符合時,則是當成新定義的方法使用。 所以如果想覆蓋基類方法時,最好還是寫上@Override註解,這樣有利於編譯器幫助檢查錯誤 */ //示例: class Test{ public void t(String s){ System.out.println("Test.t(String):" + s); } public void t2(int i){ System.out.println("Test.t2(int):" + i); } public void t3(){ t("override"); } } 11.public class OverrideTest extends Test{ 12. @Override//此處寫與不寫都能覆蓋基類的t(String)方法 13. public void t(String s){ 14. System.out.println("OverrideTest.t(String):" + s); 15. } 16. //此處不能寫@Override註解,因為方法引數型別與基類的t2方法的引數型別不同 17. //所以此處只能新定義了一個t2(float)方法,並不能實現覆蓋 18. public void t2(float f){ 19. System.out.println("OverrideTest.t2(float):" + f); 20. } 21. public static void main(String[] args){ 22. OverrideTest ot = new OverrideTest(); 23. ot.t("china34420"); 24. ot.t2(1.0f); 25. ot.t2(1); 26. ot.t3(); 27. } 28.} 29./*輸出: 30. OverrideTest.t(String):china34420 31. OverrideTest.t2(float):1.0 32. Test.t2(int):1 33. OverrideTest.t(String):override 34.*/ 35.