Java @Override注解 写与不写的区别

/*
    一般来说,写与不写没什么区别,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.  

猜你喜欢

转载自blog.csdn.net/u010486679/article/details/81982295