对重载 (Overload) 的认识
-
为什么要用方法重载:
- 对于功能类似的方法来说,因为参数列表不一样,如果定义不同名称的方法,太麻烦且难以记忆。
- 为了解决这个问题,引入方法的重载。
-
重载的定义:
- 多个方法的名称一样,但参数列表不一样。
-
例子:
-
不使用方法重载
-
定义三个功能类似的方法
public class TestOverload { public static int sumOne(int a) { return a; } public static int sumTwo(int a, int b) { return a + b; } public static int sumThree(int a, int b, int c) { return a + b + c; } }
-
使用这三个方法
public static void main(String[] args) { System.out.println(sumOne(1)); // 输出 1 System.out.println(sumTwo(1, 2)); // 输出 3 System.out.println(sumThree(1, 2, 3)); // 输出 6 }
-
-
使用方法重载
-
定义三个功能类似的方法
public class TestOverload { public static int sum(int a) { return a; } public static int sum(int a, int b) { return a + b; } public static int sum(int a, int b, int c) { return a + b + c; } }
-
使用这三个方法
public static void main(String[] args) { System.out.println(sum(1)); // 输出 1 System.out.println(sum(1, 2)); // 输出 3 System.out.println(sum(1, 2, 3)); // 输出 6 }
-
-
-
注意:
-
方法重载的相关因素:
-
参数个数不同
public static int sum(int a) { return a; } public static int sum(int a, int b) { return a + b; }
-
参数类型不同
public static int sum(int a, int b) { return a + b; } public static int sum(long a, long b) { return (int) (a + b); }
-
参数的多类型顺序不同
public static int sum(int a, double b) { return (int) (a + b); } public static int sum(double a, int b) { return (int) (a + b); }
以上的三个因素都可以进行方法的重载
-
-
方法重载的不相关因素:
-
与参数的名称无关
public static int sum(int a, int b) { return a + b; } public static int sum(int x, int y) { return x + y; }
-
与方法的返回值无关
public static double sum(int a, int b) { return a + b; } public static int sum(int a, int b) { return a + b; }
以上的三个因素都不可以进行方法的重载
-
-
-
总结:
-
如果有功能类似的方法,可以使用方法重载,这样不仅容易记忆,调用起来也方便。