作者:黄济民
方法重载又被称为Overload 使用方法重载的时候要考虑功能是否相似,尽可能让方法名不同。
package com.hjm.dome;
/**
• @author Rmin
- 以下代码不使用“方法重载机制”,不使用Overload,分析程序存在缺点?
1. sumInt,sumLong,sunDouble方法虽然功能不同,但是功能相似的。都是求和。在以下程序当中功能相似的方法,分别起到了三个不同的名字,这对于程序员来说,调用方法的时候不方便,程序员需要记忆更多方法,才能完成调用。【不方便】•
2. 代码不美观。•
有没有这样的一种机制:功能虽然不同,但是“功能相似”的时候,有没有这样的一种机制,可以让程序员使用这些方法的时候就像在使用同一个方法一样,这样程序员以后编写代码比较方便,也不需要记忆更多的方法名。代码也会很美观。•
有这种机制:方法重载机制Overload•
*/
public class OverloadText01 {
//入口
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);
}
//定义一个方法,可以计算两个int类型数据的和
public static int sumInt(int a, int b) {
return a + b;
}
//定义一个方法,可以计算两个double类型数据的和
public static double sumDouble(double a, double b) {
return a + b;
}
//定义一个方法,可以计算两个long类型数据的和
public static long sumLong(long a, long b) {
return a + b;
}
//最终希望达到的效果是:程序员在使用上面的三个相似的方法的时候,就行在用一个方法一样。
//java支持这种机制【有些语言不支持,例如:JavaScript】
}
package com.hjm.dome;
/**
• @author Rmin
- 该程序是一个体验程序,体验一下方法重载的优点:
* 程序员调用方法的时候,比较方便,虽然调用的是不同的方法,但是就感觉在使用一个方法一样。
不需要记忆更多的方法名。
* 代码美观
- 前提:功能相似的时候,方法名可以相同。
- 但是:功能不同的时候,尽可能让这两个方法的名字不同。
*/
public class OverloadText02 {
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,int)");
return a + b;
}
public static long sum(long a, long b) {
System.out.println("sum(long,long)");
return a + b;
}
public static double sum(double a, double b) {
System.out.println("sum(double,double)");
return a + b;
}
}
package com.hjm.dome;
/**
• @author Rmin
•
• 方法重载:
1.方法重载又被称为:Overload•
2.什么时候考虑使用方法重载?* 功能相似的时候,尽可能让方法名相同。•
【但是:功能不同/不相似的时候,尽可能让方法名不同】•
3.什么条件满足之后构成的方法重载?* 在同一类当中* 方法名相同* 参数列表不同:- 数量不同- 顺序不同- 类型不同•
4.方法重载和什么有关系,和什么没有关系?* 方法重载和方法名+参数列表有关系* 方法重载和返回值类型无关* 方法重载和修饰符列表无关*/
public class OverloadText03 {
public static void main(String[] args) {
m1();
m1(10);
m2(1,2.0);
m2(2.0,1);
m3(10);
m3(3.0);
// m4(1,2);
// m4(1,2);
}
//以下两个方法构成重载
public static void m1() {}
public static void m1(int a) {}
//以下两个方法构成重载
public static void m2(int a,double b) {}
public static void m2(double a,int b) {}
//以下两个方法构成重载
public static void m3(int x) {}
public static void m3(double x) {}
//编译错误:以下不是方法重载,是发生了方法重复
// public static void m4(int a,int b) {}
// public static void m4(int a,int b) {}// public static void x() {
//
// }
// public static int x() {
//
// }// void y() {
//
// }
//
// public static void y() {
//
// }}