方法的重载
-
重载就是在一个类中,有相同的函数名称,但是形参不同的函数
-
方法重载规则:
- 方法名必须相同
- 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
个数不同(加法)
package com.baidu.www; public class HelloWorld{ public static void main(String[] args) { int c=add(10,20,30); System.out.println(c); } public static int add(int a,int b){ return (a+b); } //static 类变量,可以直接调用 //定义一个加法 public static int add(int a,int b,int c){ return (a+b+c); } }
类型不同(比较大小)
package com.baidu.www; public class HelloWorld{ public static void main(String[] args) { double max=max(10.0,20.0); System.out.println(max); } //两个数比大小 public static double max(double num1,double num2){ double result=0; //当两个数相等 if(num1==num2){ System.out.println("num1==num2"); return 0; } //当两个数不相等 if(num1>num2){ result=num1; }else { result=num2; } return result; }public static int max(int num1,int num2){ int result=0; //当两个数相等 if(num1==num2){ System.out.println("num1==num2"); return 0; } //当两个数不相等 if(num1>num2){ result=num1; }else { result=num2; } return result; } }
- 方法的返回类型可以相同,也可以不同。(比较大小)
package com.baidu.www; public class HelloWorld{ public static void main(String[] args) { int max=max(10.0,20.0); System.out.println(max); } //两个数比大小 public static int max(double num1,double num2){ int result=0; //当两个数相等 if(num1==num2){ System.out.println("num1==num2"); return 0; } //当两个数不相等 if(num1>num2){ result=(int)num1; }else { result=(int)num2; } return result; } public static int max(int num1,int num2){ int result=0; //当两个数相等 if(num1==num2){ System.out.println("num1==num2"); return 0; } //当两个数不相等 if(num1>num2){ result=num1; }else { result=num2; } return result; } }
- 仅仅返回类型不同不足以构成方法的重载。
-
实现理论:
方法名称相同时,编译器会根据调用方法的参数个数,参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错