java中允许在同一个类中,存在多个同名但不同参数列表的方法。这就是重载
例如System.our.println();语句的println方法就是一个有多个重载的方法,可以输出数字100也可以输出字符串"你好".
java会根据传入的不同参数找到对应的重载方法。
1-减轻起名的麻烦
2-减轻记名的麻烦
3-减少代码耦合度
编写5个同名方法,要求传入以下数字时都能计算和:
5,7
5.5,7
7,5.5
1.2,5.6
5,4,6
根据以上数字可得出5个方法的形参列表为:
int,int
double,int
int,double
double,double
int,int,int
public class OverLoad{
public static void main(String[] args) {
T t = new T();
int a = t.cle(5,7);
double b = t.cle(5.5,7);
double c = t.cle(7,5.5);
double d = t.cle(1.2,5.6);
int f = t.cle(5,4,6);
}
}
class T{
public int cle(int a,int b){
System.out.println("方法cle/int a,int b被调用");
return a+b;
}
public double cle(double a,int b){
System.out.println("方法cle/double a,int b被调用");
return a+b;
}
public double cle(int a,double b){
System.out.println("方法cle/int a,double b被调用");
return a+b;
}
public double cle(double a,double b){
System.out.println("方法cle/double a,double b被调用");
return a+b;
}
public int cle(int a,int b,int c){
System.out.println("方法cle/int a,int b,int c被调用");
return a+b+c;
}
}
输出结果
都找到了符合实参的对应方法
1-方法名必须相同
2-形参列表必须不同,(参数的类型或个数,至少有一样不同,参数名无要求)
3-返回类型无要求
ps:方法其他都相同,只是参数名不同,无法构成重载。其他相同返回类型不相同也无法构成重载
1-在T类中分别创建接收 int 和 int int 和 字符串的三个方法。方法名为m,分别实现平方,相乘,输出字符串,并在main方法中调用
public class Method05{
public static void main(String[] args) {
T t =new T();
int a = t.m(4);
System.out.println(a);
int b = t.m(4,5);
System.out.println(b);
t.m("大人物");
}
}
class T {
//平方
public int m(int a){
return a*a;
}
//相乘
public int m(int a,int b){
return a*b;
}
//输出字符串
public void m(String a){
System.out.println(a);
}
}
输出结果
2在T类中创建三个重载方法,第一个方法返回两个int中的最大值,第二个方法返回double中的最大值,第三个方法返回三个int中的最大值
可以使用三元运算符完成
布尔值 ? 为ture返回 : 为false返回
public class Method05{
public static void main(String[] args) {
T t =new T();
int a = t.m(4,50);
System.out.println(a);
double b = t.m(56.56,54.25);
System.out.println(b);
int c = t.m(54,51,85);
System.out.println(c);
}
}
class T {
//两个int中最大的值
public int m(int a,int b){
return a > b ? a : b;
}
//两个double中最大的值
public double m(double a,double b){
return a > b ? a : b;
}
//三个int中的最大值
public int m(int a,int b,int c){
int max = a > b ? a : b;
return max > c ? max : c;
}
}
输出结果