Java方法重载
感受
以下代码不使用“方法重载”,不使用overload,分析程序存在的缺点
public class OverloadTest01 {
// 入口
public static void main(String[] args){
int result1 = sumInt(1, 2);
System.out.println(result1);
double result2 = sumDouble(1.0, 2,0);
System.out.println(result2);
long result3 = sumLong(1L, 2L);
System.out.println(result3);
}
public static int sumInt(int a, int b){
return a + b;
}
public static double sumDouble(double a, double b){
return a + b;
}
public static long sumLong(long a, long b){
return a + b;
}
}
缺点:
-
sumInt、sumDouble、sumLong方法虽然功能不同,但功能相似【求和】
-
代码不美观,影响阅读,对以后维护造成不便
解决:使用 Sun 公司提供的【方法重载/overload】机制,仅限功能相似
体验方法重载:
public class OverloadTest01 {
// 入口
public static void main(String[] args){
System.out.println(sum(1, 2));
System.out.println(sum(1.0, 2.0));
System.out.println(sum(1L, 2L));
}
public static int sum(int a, int b){
System.out.println("sum(int)")
return a + b;
}
public static double sum(double a, double b){
System.out.println("sum(double)")
return a + b;
}
public static long sum(long a, long b){
System.out.println("sum(long)")
return a + b;
}
}
可以看到,使用方法重载,此时区分方法不再依靠方法名,依靠参数的参数数据类型
参数的类型不同,对应调用的方法不同
使用方法重载,注意区分功能的相似度,功能有明显区别应该以不同名称命名,避免触发方法重载
方法重载使用
方法重载:
-
方法重载又被称作:overload
-
什么时候能使用方法重载?
- 功能相似时,尽可能使用
-
什么条件构成方法重载?
- 在同一个类当中
- 方法名相同
- 参数列表不同:
- 数量不同
- 顺序不同
- 类型不同
-
方法重载和什么有关系,和什么没关系?
- 方法名+参数列表有关系
- 返回值类型无关
- 修饰符列表无关
public class OverloadTest02{
public static void main(String[] args){
U.p(10);
U.p(false);
U.p('a');
U.p("hello World");
U.p(3.0);
}
}
class U{
public static void p(byte b){
System.out.println(b);
}
public static void p(short b){
System.out.println(b);
}
public static void p(int b){
System.out.println(b);
}
public static void p(long b){
System.out.println(b);
}
public static void p(float b){
System.out.println(b);
}
public static void p(double b){
System.out.println(b);
}
public static void p(boolean b){
System.out.println(b);
}
public static void p(char b){
System.out.println(b);
}
public static void p(String b){
System.out.println(b);
}
}