方法的重载
-
重载就是在一个类中,有相同的函数名称,但是形参不同的函数
-
方法重载的规则:
- 方法名称必须相同(如果名称不同的话就不叫重载了,那是叫新的方法)
- 参数列表必须不同(个数不同、或类型不同、参数序列顺序不同等)
- 方法的返回类型可以相同也可以不相同
- 仅仅返回类型不同不足以形成方法的重载
-
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数、参数类型等逐个去匹配,以选择对应的方法,如果匹配失败,则编译器报错
实例演示:
用之前做过的两个实验来演示重载过程:
-
add()方法重载
public static void main(String[] args) { int x = add(1,2); // 这个是之前演示过的add原方法,计算两个数的和并返回值 System.out.println("原方法计算结果为:"+x); int y = add(1,2,3); // 这个是本节课学习的重载方法,虽然方法名与原方法一样,但参数个数不同,所以是不同的方法 System.out.println("重载方法计算结果为:"+y); } // 原方法add() public static int add(int a, int b){ return a+b; } public static int add(int a, int b, int c){ return a+b+c; }
-
max()方法重载
public static void main(String[] args) { int x = max(1,2); // 这个是之前演示过的max()原方法,返回两个数中较大的数 System.out.println("原方法计算结果为:"+x); int y = max(1,2,3); // 这个是本节课重载后的方法,虽然方法名也是max但是与上面的max相比,是完全不同的两个方法 System.out.println("重载方法计算结果为:"+y); } // max原方法 public static int max(int a, int b){ if(a>b){ return a; }else if (b>a){ return b; }else { return 0; } } // max重载后,含有三个参数,该方法返回三个参数中最大的值 public static int max(int a, int b, int c){ if((a>=c)&&(a>=b)){ // a最大或者a与b或c相等时,返回a的值 return a; }else if ((b>a)&&(b>=c)){ // b最大或者b和c相等时返回c的值 return b; }else { // 返回c的值 return c; } }