重写(Override)
重写是子类对父类的允许访问的方法的进行重新编写, 但是返回值和形参都不能改变。
实例
1 class Animal{ 2 public void run(){ 3 System.out.println("Animal Run"); 4 } 5 } 6 7 class Dog extends Animal{ 8 public void run(){ 9 System.out.println("Dog Run"); 10 } 11 } 12 13 public class Test{ 14 public static void main(String[] args){ 15 Animal animal = new Animal();//创建Animal对象 16 Dog dog = new Dog(); //创建Dog对象 17 18 animal.run(); //执行Animal类的方法 19 dog.run(); //执行Dog类的方法 20 } 21 }
运行输出:
Animal Run
Dog Run
重载(overloading)
重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。
实例
1 public class Test{ 2 //重载方法1 test1 3 public int test(){ 4 System.out.println("test1"); 5 return 1; 6 } 7 //重载方法2 test2 8 public void test(int a){ 9 System.out.println("test2"); 10 } 11 12 //以下两个参数类型顺序不同 13 //重载方法3 test3 14 public String test(String s,int a){ 15 System.out.println(s); 16 return "return test3"; 17 } 18 19 //重载方法4 test4 20 public String test(int a,String s){ 21 System.out.println(s); 22 return "return test4"; 23 } 24 25 public static void main(String[] args){ 26 Test t = new Test(); 27 System.out.println("-----------------------"); 28 System.out.println(t.test()); 29 System.out.println("-----------------------"); 30 t.test(1); 31 System.out.println("-----------------------"); 32 // 33 System.out.println(t.test(1,"test3")); 34 System.out.println("-----------------------"); 35 System.out.println(t.test("test4",1)); 36 } 37 }
运行输出:
----------------------- test1 1 ----------------------- test2 ----------------------- test3 return test4 ----------------------- test4 return test3
@override
判断是否是方法覆盖,在方法上添加@override标签后,如果这个方法是覆盖了父类的覆盖方法,则编译通过,如果不是则报错
由于fly1()方法不是覆盖方法,所以编译时报错