在Java中,允许同一个类中,多个同名方法的存在,但要求形参列表不一致。例如可以使用多次System.out.println(),其中的参数可以为bool类型、char类型、整型等。
案例:要求定义一个类MyCalculator,包含方法calculate。可以计算两个int的和,计算一个double、一个int的和,计算三个整数的和。
//要求定义一个类MyCalculator,包含方法calculate。
// 可以计算两个int的和,计算一个double、一个int的和,一个是int、一个是double的和,计算三个整数的和。
public class overload01 {
public static void main(String[] args) {
class MyCalculator{
public int calculate(int n1, int n2){
return n1 + n2;
}
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;
}
}
MyCalculator aa = new MyCalculator();
System.out.println(aa.calculate(1,2));
System.out.println(aa.calculate(1.3,4));
}
}
3
5.3
Process finished with exit code 0
方法重载的要求
- 方法名必须相同。
- 参数列表必须不同。个数、类型、顺序至少有一个不同。
- 返回值无要求。
案例:类Methods中定义三个重载方法并调用,方法名为m,三个方法分别接受一个int参数、两个int参数、一个字符串参数。分别执行平方运算并输出结果,相乘并输出结果,输出字符串信息。
public class overload02 {
public static void main(String[] args) {
class Methods {
public void m (int a){
System.out.println(a*a);
}
public void m (int a,int b){
System.out.println(a*b);
}
public void m(String a){
System.out.println(a);
}
}
Methods aa = new Methods();
aa.m(3);
aa.m(2,3);
aa.m("hello world");
}
}
9
6
hello world
Process finished with exit code 0
方法重载与重写的对比