1、方法重载的优点
1.1、不使用方法重载时存在的缺陷
以下代码不使用“方法重载机制”,不使用overload
分析程序存在的缺点?
sumInt, sumDouble, sumLong
方法输入功能不同 ,但是相似,都是求和。
在以下功能相似的方法中,分别起了三个不同的名字,这对于程序员来,调用起来不方便。
public class Overload01
{
public static void main(String[] args)
{
int result1 = sumInt(1, 2);
double result2 = sumDouble(1.0, 2.0);
long result3 = sumLong(1L, 2L);
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
}
public static int sumInt(int a, int b)
{
return a+b;
}
public static long sumLong(long a, long b)
{
return a+b;
}
public static double sumDouble(double a, double b)
{
return a+b;
}
}
总结:
使用方法重载的前提是:
功能相似,功能不同时尽量让方法名不一样
以下代码便是对上例代码进行了重载处理:
public static Overload02
{
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);
{
return a+b;
}
public static double sum(double a, double b);
{
return a+b;
}
public static long sum(long a, long b)
{
return a+b;
}
}
2、方法重载的基本概念
2.1、什么时候考虑使用方法重载?
答:功能相似
2.2、构成方法重载的条件?
- 在同一个类当中
- 方法名相同
- 参数列表不同:
- 参数数量不同
- 参数顺序不同
- 参数类型不同
2.3、方法重载和什么有关系,和什么没有关系?
- 方法重载和方法名,参数列表有关系
- 方法重载和返回值类型无关
- 方法重载和修饰符列表无关
*/
public class Overload02
{
//以下两方法构成重载,属于参数数量不同
public static void m1(){}
public static void m1(int a){}
//以下两方法构成重载,属于参数顺序不同
public static void m2(double a, int b){}
public static void m2(int a, double b){}
//构成重载,属于参数类型不同
public static void m3(int a);
public static void m3(double a);
//方法重复,编译报错,方法重载与参数名无关,只与参数的类型有关
public static void m4(int b, int a){}
public static void m4(int a, int b){}
//不构成方法重载,方法重载与返回值类型无关
public static void m5(){}
public static int m5()
{
return 1;
}
//方法重载和修饰符无关
void m6(){}
public static void m6(){}
}
3、方法重载的具体应用
/*
方法重载的具体应用
*/
public class Overload03
{
public static void main(String[] args)
{
U.p(123);
}
}
/*
自定义输出库
*/
public 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);
}
}