方法的重载与方法的重写

方法重载是Java中一个很重要的概念,它是类名的不同表现形式。构造函数其实也是重载的一种,还有一种是方法的重载。

1 package day02;
 2 
 3  
 4 
 5 public class Apple {
 6 
 7     int num;
 8 
 9     String color;
10 
11     public Apple() {
12 
13     }
14 
15 
16     public Apple(int num, String color) {
17 
18     }
19 
20 
21     public int getApple(int num) {
22 
23         return num;
24 
25     }
26  
27     public String getApple(String color) {
28 
29         return color;
30 
31     }
32 
33 
34 }

如上所示,有两种重载的方式,一种是Apple构造函数的重载,一种是getApple方法的重载。那有很多相同的名字,Java是如何知道调用哪个方法呢?每个重载的方法都有独一无二的参数列表。其中包括参数的类型、顺序、参数数量等,满足一种一个因素就构成了重载的必要条件。

重载的条件:

第一,方法名称必须相同。

第二,参数列表必须不同(个数不同或类型不同,参数类型排列顺序不同等)。

第三,方法的返回类型可以相同也可以不同。

第四,仅仅返回类型不同不足以成为方法的重载。

第五,重载是发生在编译时的,因为编译器可以根据参数的类型来选择使用哪个方法。

方法的重写与重载名字很相似,但是完全不同的东西。方法的重写描述的是子类对父类直接的。重载指的是同一类中的,例如:

 1 package day02;
 2 
 3  
 4 
 5 class Banana extends Fruit {
 6 
 7     @Override
 8 
 9     public void eat() {
10 
11         System.out.println("eat banana");
12 
13     }
14 
15 }
16 
17  
18 
19 class Fruit {
20 
21     public void eat() {
22 
23         System.out.println("eat fruit");
24 
25     }
26 
27 }

可以看到,子类Banana中的方法eat与父类Fruit中的方法eat方法名相同。重写的原则:

第一,重写的方法必须和父类保持一致,包括返回值类型、方法名、参数列表都一样。

第二,重写的方法使用@Override注解来标识。

第三,子类中重写方法的访问权限不能低于父类中方法的访问权限。

欢迎批评指正,提出问题,谢谢!
原文地址:https://www.cnblogs.com/xxeleanor/p/14320362.html