一、方法的重载
方法重载是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注解来标识。
第三,子类中重写方法的访问权限不能低于父类中方法的访问权限。