1、概述
方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可。
注意:虽然在方法重载中可以使用连个方法的返回类型不同,但只有返回类型不同并不足以区分两个方法的重载,还需要通过参数的个数以及参数的类型来设置。
例子10.9
1 public class OverLoandTest { 2 public static int add(int a, int b) { 3 return a + b; 4 } 5 6 //定义与第一个方法相同名称、参数类型不同的方法 7 public static double add(double a, double b) { 8 return a + b; 9 } 10 11 //定义与第一个方法参数个数不同的方法 12 public static int add(int a) { 13 return a; 14 } 15 16 //定义一个成员方法 17 public static int add(int a, double b) { 18 return 1; 19 } 20 21 //这个方法与前一个方法参数次序不同 22 public static int add(double a, int b) { 23 return 1; 24 } 25 26 //主方法 27 public static void main(String[] args) { 28 System.out.println("调用add(int,int)方法:" + add(1,2)); 29 System.out.println("调用add(double,double)方法:" + add(2.1,3.3)); 30 System.out.println("调用add(int)方法:" + add(1)); 31 } 32 }
2、在谈到参数个数可以确定两个方法是否具有重载关系时,会想到定义不定长参数方法。
返回值 方法名(参数数据类型...参数名称)
备注:在参数列表中使用“...”形式定义不定长参数,其实这个不定长参数a就是一个数组,编译器会将(int...a)这种形式看做是(int[] a),所以在add()方法体做累加操作时使用到了for循环语句,在循环中是根据数组a的长度做循环条件的,最后将累加结果返回。
例子10.10
1 public class OverLoadTest2 { 2 public static int add(int a, int b) { 3 return a + b; 4 } 5 6 //不定长参数形式的重载 7 public static int add(int...a) { 8 int s = 0; 9 for(int i=0;i<a.length;i++) { //根据参数个数做循环操作 10 s += a[i]; //将每个参数累加 11 } 12 return s; //将计算结果返回 13 } 14 15 //主方法 16 public static void main(String args) { 17 System.out.println("调用add(int,int)参数方法:" + add(3,4)); 18 19 //调用不定长参数方法 20 System.out.println("调用不定长参数方法:" + add(1,2,3,4,5,6,7,8,9)); 21 } 22 }