对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。
方法的重载(Overload):多个方法的名称一样,但是参数列表不一样。
public class DemoMethodOverload { public static void main(String[] args) { System.out.println(sum(1,2,3,4)); // 写了几个参数就调用哪个 } public static int sum(int a,int b){ return a + b; } public static int sum(int a,int b,int c){ return a + b + c; } public static int sum(int a,int b,int c,int d){ return a + b + c + d; } }
// 输出10
注意事项:
方法重载与下列因素相关:
1.参数个数不同。
2.参数类型不同。
3.参数的多类型顺序不同。如(int a,double b)和(double a,int b) 。
方法重载与下列因素无关:
1.与参数名称无关。
2.与返回值类型无关。单独调用的时候,无法识别。
3.与修饰符也无关。
完整代码:
package demo01; /* 对于功能类似的方法来说,因为参数列表不一样,却需要记住那么多不同的方法名称,太麻烦。 方法的重载(Overload):多个方法的名称一样,但是参数列表不一样 */ public class DemoMethodOverload { public static void main(String[] args) { System.out.println(sum(1,2,3,4)); sum(1,2,3,4); //如果返回值既有int型又有double型,单独调用时无法识别 } public static int sum(int a,int b){ return a + b; } public static int sum(int a,int b,int c){ return a + b + c; } public static int sum(int a,int b,int c,int d){ return a + b + c + d; } // 错误写法,与方法的返回值无关 /*public static double sum(int a,int b,int c,int d){ return a + b + c + d; }*/ // 错误写法,与参数的名称无关 /*public static double sum(int x,int y){ return x + y; }*/ }