第六章 方法的重载(1.5)
六、方法的重载
在一个类中,多个方法具有相同的方法名称,但却具有不同的参数列表,与返回值无关,称作方法重载(overload
)。
实例:
修改后的MathUtils类部分源码:
public class MathUtils {
/**
* 将两个整数相乘并返回结果
* @param num1 第一个参与相乘的整数
* @param num2 第二个参与相乘的整数
* @return 相乘的结果
*/
public int multiply(int num1, int num2) {
return num1 * num2;
}
/**
* 将两个浮点相乘并返回结果
* @param num1 第一个参与相乘的浮点数
* @param num2 第二个参与相乘的浮点数
* @return 相乘的结果
*/
public double multiply(double num1, double num2) {
return num1 * num2;
}
/**
* 将两个整数相加并返回结果
* @param num1 第一个参与相加的整数
* @param num2 第二个参与相加的整数
* @return 相加的结果
*/
public int add(int num1, int num2) {
return num1 + num2;
}
/**
* 将两个浮点数相加并返回结果
* @param num1 第一个参与相加的浮点数
* @param num2 第二个参与相加的浮点数
* @return 相加的结果
*/
public double add(double num1, double num2) {
return num1 + num2;
}
}
Test类源码:
public class Test {
public static void main(String[] args) {
// 实例化一个MathUtils类的对象,并赋值给MathUtils类型的变量mu
MathUtils mu = new MathUtils();
// 调用multiply(int num1, int num2)方法
int result1 = mu.multiply(3, 4);
System.out.println("result1 = " + result1);
// 调用multiply(double num1, double num2)方法
double result2 = mu.multiply(3.14, 6.18);
System.out.println("result2 = " + result2);
// 调用add(int num1, int num2)方法
int result3 = mu.add(3,4);
System.out.println("result3 = " + result3);
// 调用add(double num1, double num2)方法
double result4 = mu.add(3.12, 6.18);
System.out.println("result4 = " + result4);
}
}
解释说明:
参数列表不同,是指参数个数、参数数据类型,参数顺序不同。比如以下是正确的方法重载的例子:
public double area(double a);
public double area(int a, double b);
public double area(double a, int b);
而以下是错误的方法重载的例子:
public int calc(int a, int b);
public void calc(int x, int y);
两个calc()
方法虽然返回值类型和参数名称不同,但参数个数、类型和顺序完全相同,也就是说它们的参数列表是相同的。
调用方法时,方法名和传入的参数共同决定了具体调用了哪个方法。
JDK API
中有众多方法重载的例子,比如String类
的substring([参数])、indexOf([参数])
、lastIndexOf([参数])
方法,PrintStream类的println()
方法等。