为什么会有重载方法?
重载方法使用同一个方法名字,方法的可读性及可用性更强,比如println方法,一看名字便知道是打印输出,并且println方法支持很多数据类型。
下边看一个例子:
需求:编写一个求累加和的方法,可以实现如下功能:
1)求1到 某个正整数的累加和。
2)给出一个数据区间范围,求这个范围的数的累加和,数据区间为正整数。
分析:
需求1和2都是求累加和,并且都是求某个数据区间的累加和,需要定义方法接收起始和截止参数,根据区间范围求累加和,并将计算出的累加和作为方法返回值返回。
如:向方法传入1和10,则求出1到10之间数的累加和。向方法传入2和100,则求出2到100之间数的累加和。
代码如下:
/**
* 面向过程编程-方法重载
* @author 攀博课堂(www.pbteach.com)
*
*/
public class FunctionDemo4 {
public static void main(String[] args) {
//求1到 2的累加和
System.out.println(sum(2));
//求2到 11的累加和
System.out.println(sum(2,11));
}
/**
* 求1到 end的累加和
* @param end 截至下标
* @return 累加和
*/
public static long sum(int end) {
if(1>=end) {//参数合法性判断
System.out.println("截至下标必须大于1");
return -1;
}
return sum(1,end);
}
/**
* 求start到 end的累加和
* @param start 开始下标
* @param end 截至下标
* @return 累加和
*/
public static long sum(int start,int end) {
if(start<=0 || end<=0) {//参数合法性判断
System.out.println("开始下标 和截至下标必须是大于0的整数");
return -1;
}
if(start>end) {//参数合法性判断
System.out.println("截至下标必须比开始下标 大");
return -1;
}
// 定义变量,存放累加值
long sum = 0;
//实现start到end的累加
for (int x = start; x <= end; x++) {
sum = sum + x;
}
return sum;
}
}
执行流程如下:
1)执行main方法中的sum(2)
2)main方法调用sum(int end)方法,传入参数2
3)执行sum(int end)方法中的sum(1,2)
4)sum(int end)方法调用sum(int start,int end)方法,传入参数1和2。
5)sum(int start,int end)方法计算1到2的累加和,返回给sum(int end)方法
6)sum(int end)方法将1到2的累加和返回给main方法
7)执行main方法中的sum(2,11)
8)main方法调用sum(int start,int end)方法,传入参数2和11。
9)sum(int start,int end)方法计算2到11的累加和,将累加和返回给main方法。