面试题答案
一键面试Java中方法重载的规则
- 方法名必须相同:在同一个类中,多个方法具有相同的方法名。
- 参数列表必须不同:
- 参数个数不同:例如一个方法接收一个参数,另一个方法接收两个参数。
- 参数类型不同:比如一个方法接收
int
类型参数,另一个方法接收double
类型参数。 - 参数顺序不同:例如一个方法接收
(int, double)
参数,另一个方法接收(double, int)
参数。
- 与返回值类型无关:返回值类型不能作为区分重载方法的依据。
- 与访问修饰符无关:无论是
public
、private
还是protected
等访问修饰符,都不影响方法重载的判断。
示例代码
public class MethodOverloadingExample {
// 方法1:接收一个int参数
public int add(int a) {
return a;
}
// 方法2:接收两个int参数
public int add(int a, int b) {
return a + b;
}
// 方法3:接收一个int和一个double参数
public double add(int a, double b) {
return a + b;
}
// 方法4:接收一个double和一个int参数
public double add(double a, int b) {
return a + b;
}
}
在上述代码中,add
方法在同一个类中进行了重载,通过不同的参数列表实现了不同的功能。
返回值类型不能作为区分重载方法依据的原因
- 调用时无法明确指定:当调用方法时,编译器是根据方法名和参数列表来确定具体调用哪个方法的。如果仅根据返回值类型来区分,在调用时编译器无法明确知道开发者想要调用哪个方法。例如:
public class ReturnTypeOverloadingProblem {
// 假设返回值类型可以作为区分重载方法依据
public int test() {
return 1;
}
public double test() {
return 1.0;
}
}
在上述代码中,如果返回值类型可以作为区分依据,当调用test()
方法时,编译器无法确定应该调用返回int
类型的test
方法还是返回double
类型的test
方法,这会导致编译错误。所以返回值类型不能作为区分重载方法的依据。