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


  • /*俺的菜鳥筆記 
  •     Java 中的覆蓋@Override注解 寫與不寫的一點點理解 
  •     一般來說,寫與不寫沒什么區別,JVM可以自識別 
  •     寫的情況下:即說明子類要覆蓋基類的方法,基類必須存在方法 
  •                         (控制類型public,protected,返回值,參數列表類型)與子類方法完成一致的方法,否則會報錯(找不到被Override的方法)。 
  •     在不寫@Override注解的情況下,當基類存在與子類各種條件都符合的方法是即實現覆蓋; 
  •     如果條件不符合時,則是當成新定義的方法使用。 
  •     所以如果想覆蓋基類方法時,最好還是寫上@Override注解,這樣有利於編譯器幫助檢查錯誤 
  • */  
  • //示例:  
  • public class OverrideTest extends Test{  
  •     @Override//此處寫與不寫都能覆蓋基類的t(String)方法  
  •     public void t(String s){  
  •         System.out.println("OverrideTest.t(String):" + s);  
  •     }  
  •     //此處不能寫@Override注解,因為方法參數類型與基類的t2方法的參數類型不同  
  •     //所以此處只能新定義了一個t2(float)方法,並不能實現覆蓋  
  •     public void t2(float f){  
  •         System.out.println("OverrideTest.t2(float):" + f);  
  •     }  
  •     public static void main(String[] args){  
  •         OverrideTest ot = new OverrideTest();  
  •         ot.t("china34420");  
  •         ot.t2(1.0f);  
  •         ot.t2(1);  
  •         ot.t3();  
  •     }  
  • }  
  • /*輸出: 
  •     OverrideTest.t(String):china34420 
  •     OverrideTest.t2(float):1.0 
  •     Test.t2(int):1 
  •     OverrideTest.t(String):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");    
  •     }  
  • }  

  • 免責聲明!

    本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



     
    粵ICP備18138465號   © 2018-2025 CODEPRJ.COM