【发布时间】:2014-01-24 17:51:54
【问题描述】:
这个问题是关于重载方法的,我想我理解了基本思想,但我得到了一些奇怪的错误“Overloading.java:14”。 就像我的问题是我不知道如何返回我的方法的两个参数。所以我想也许可以用 toString() 转换带有两个 int 参数的方法,然后返回它。出了什么大错特错。 输出必须如下:
10
a 和 b 10、20
字符
结果 97
我的问题是“a and b 10, 20”,并没有做“char a”只是为了让你们知道。这不是家庭作业。 到目前为止,这是我的代码,其中包含一个主类和一个辅助类:
OverMain 类:
class OverMain {
public static void main(String args[]) {
Overload overload = new Overload();
int result;
System.out.println("a " + overload.test(10)); //prints a 10
System.out.println("a and b " + overload.test(10, 20)); //the method I have trouble with
result = overload.test('a'); //prints Result 97
System.out.println("Result " + result);
}
}
重载类:
//The class which is suppose to overload test methods
class Overload {
public int test(int a) {
return a;
}
public String test(int a, int b) {
String string = "";
string = test(a, b).toString();
return string;
}
}
【问题讨论】:
-
您的
test(int a, int b)方法中有一个无限递归循环:它一直在调用自身,直到堆栈溢出。 -
为什么你从
test(int a, int b)调用test(a, b)那是无限递归 -
所以你有一个 StackOverflow,然后用谷歌搜索“StackOverflow”,然后来到这个网站? :-) StackOverflow 意味着你有一个无限递归。
-
请注意,您不能重载返回类型,至少在 Java 中是这样。
-
@Ingo 实际上你可以通过使其更具体(例如在子类中返回 String,而不是在基类中返回 Object)
标签: java overloading