方法的重载(Overload)
1、对于功能类似的多个方法,只要记住一个名字即可,可以根据参数列表来进行自动适配。
2、参数列表包括三点:
①参数的个数不同
②参数的类型不同
③参数的多类型顺序不同
3、表达式相加,当中谁表示的范围大,结果返回就是谁。
4、注意,与返回值无关,只与参数类型有关。只修改形参的名称也是不行的。
②跟成员方法一样,构造方法也可以重载。
③声明为final和static的方法不能被重载
④返回语句不会影响重载,方法名称必须相同,而返回语句可以不同。
上代码:
public class DemoOverload {
public static void main(String[] args) {
System.out.println(sum(1, 2, 3));// 现在执行的是int+int+int 结果为6
System.out.println(sum(2.3, 3.22f));// 现在执行的是double+float
System.out.println(sum(2.2, 3.66));// 现在执行的是double+double
System.out.println(sum(3.3f, 5.22f));// 现在执行的是double+float
System.out.println(sum(3.3f, 5.22));// 现在执行的是double+double
}
public static int sum(int a, int b) {
System.out.println("现在执行的是int+int");
return a + b;
}
// 错误写法,仅仅是return 不同不能构成重载.
/*
* public static int sum(int a, int b) {
* System.out.println("现在执行的是int+int");
* return a + b+2.3;
* }
*/
public static int sum(int a, int b, int c) {
System.out.println("现在执行的是int+int+int");
return a + b + c;
}
public static double sum(double a, int b) {
System.out.println("现在执行的是double+int");
return a + b;
}
// 错误写法:double+int会自动转换为范围更大的,因此不能写成double
/*
* public static int sum(double a, int b) {
* System.out.println("现在执行的是double+int");
* return a + b;
* }
*/
public static double sum(double a, float b) {
System.out.println("现在执行的是double+float");
return a + b;
}
public static double sum(double a, double b) {
System.out.println("现在执行的是double+double");
return a + b;
}
}