方法的重载就是一个类中允许一个以上同名方法存在,只要这些方法的参数个数或参数类型不同即可。
- package classExtends;
-
- public class OverLoadTest {
- public static int add(int a, int b) {
- return a + b;
- }
-
- public static double add(double a, double b) {
- return a + b;
- }
-
- public static int add(int a) {
- return a;
- }
-
- public static int add(int a, double b) {
- return a + (int) b;
- }
-
- public static int add(double a, int b) {
- return (int) a + b;
- }
-
- public static void main(String[] args) {
- System.out.println("调用add(int,int)方法:" + add(1, 2)); //调用add(int,int)方法:3
- System.out.println("调用add(double,double)方法:" + add(2.1, 3.2)); //调用add(double,double)方法:5.300000000000001
- System.out.println("调用add(int)方法:" + add(2)); //调用add(int)方法:2
- System.out.println("调用add(int,double)方法:" + add(2, 2.1)); //调用add(int,double)方法:4
- }
- }
-

编译器是通过【方法名+方法各参数类型+参数个数+参数顺序】来确定类中的方法是否唯一。
在参数列表中使用”...“形式定义不定长参数,其实这个不定长参数a就是个数组,编译器会将”int...a“这种形式看做”int[] a“.
- package classExtends;
-
- public class OverLoadTest {
- public static int add(int a, int b) {
- return a + b;
- }
-
- public static double add(double a, double b) {
- return a + b;
- }
-
- public static int add(int a) {
- return a;
- }
-
- public static int add(int a, double b) {
- return a + (int) b;
- }
-
- public static int add(double a, int b) {
- return (int) a + b;
- }
-
- public static int add(int... a) { //定义不定长参数方法
- int sum = 0;
- for (int i = 0; i < a.length; i++) {
- sum += a[i];
- }
- return sum;
- }
-
- public static void main(String[] args) {
- System.out.println("调用add(int,int)方法:" + add(1, 2)); //调用add(int,int)方法:3
- System.out.println("调用add(double,double)方法:" + add(2.1, 3.2)); //调用add(double,double)方法:5.300000000000001
- System.out.println("调用add(int)方法:" + add(2)); //调用add(int)方法:2
- System.out.println("调用add(int,double)方法:" + add(2, 2.1)); //调用add(int,double)方法:4
-
- //调用不定长参数方法
- System.out.println("调用不定长参数方法:" + add(1, 2, 3, 4, 5, 6)); //调用不定长参数方法:21
- System.out.println("调用不定长参数方法:" + add(1)); //调用不定长参数方法:1
- }
- }
-