java 中允许同一个类中,多个同名方法的存在,但要求形参列表不一致。只要它们的参数列表不同即可,与修饰符和返回值类型无关。 比如:System.out.println();
out 是 PrintStream 类型。
- 参数列表: 个数不同,数据类型不同,顺序不同。如果参数列表类型、顺序、数量相同,参数名不同,不构成重载。
- 返回类型:如果参数列表相同,方法名相同,返回值不同,不构成重载。
- 重载方法调用: JVM通过方法的参数列表,调用不同的方法。
public class OverLoad01 {
public static void main(String[] args) {
MyCalculate mc = new MyCalculate();
System.out.println(mc.calculate(1, 2)); // 打印结果:3
System.out.println(mc.calculate(3, 4.5)); // 打印结果:7.5
System.out.println(mc.calculate(1.2, 2)); // 打印结果:3.2
System.out.println(mc.calculate(1, 4, 7)); // 打印结果:12
}
}
// 这个类的四个calculate方法构成了重载
// 方法名一样,参数列表的类型不一样
class MyCalculate {
// 两个整数的和
public int calculate(int n1, int n2) {
return n1 + n2;
}
// 这个方法和上面的方法不构成重载,因为参数列表的类型相同
// public int calculate(int a1, int a2) {
// return a1 + a2;
// }
// 一个整数和一个浮点数的和
public double calculate(int n1, double n2) {
return n1 + n2;
}
// 一个浮点数和一个整数的和
public double calculate(double n1, int n2) {
return n1 + n2;
}
// 三个整数的和
public int calculate(int n1, int n2, int n3) {
return n1 + n2 + n3;
}
}