1. 程式人生 > >Java 中的覆蓋@Override註解 寫與不寫的一點點理解

Java 中的覆蓋@Override註解 寫與不寫的一點點理解

Java程式碼  收藏程式碼
  1. /*俺的菜鳥筆記 
  2.     Java 中的覆蓋@Override註解 寫與不寫的一點點理解 
  3.     一般來說,寫與不寫沒什麼區別,JVM可以自識別 
  4.     寫的情況下:即說明子類要覆蓋基類的方法,基類必須存在方法 
  5.                         (控制型別public,protected,返回值,引數列表型別)與子類方法完成一致的方法,否則會報錯(找不到被Override的方法)。 
  6.     在不寫@Override註解的情況下,當基類存在與子類各種條件都符合的方法是即實現覆蓋; 
  7.     如果條件不符合時,則是當成新定義的方法使用。 
  8.     所以如果想覆蓋基類方法時,最好還是寫上@Override註解,這樣有利於編譯器幫助檢查錯誤
     
  9. */  
  10. //示例:  
  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. class Test{  
  36.     public void t(String s){  
  37.         System.out.println("Test.t(String):" + s);  
  38.     }  
  39.     public void t2(int i){  
  40.         System.out.println("Test.t2(int):" + i);      
  41.     }  
  42.     public void t3(){  
  43.         t("override");    
  44.     }  
  45. }