黑马程序员技术交流社区
标题:
一个重载函数的小问题
[打印本页]
作者:
long
时间:
2013-5-9 21:15
标题:
一个重载函数的小问题
本帖最后由 long 于 2013-5-10 00:45 编辑
OverloadingVarargs2.java无法通过编译,但OverloadingVarargs3.java却顺利通过编译。这是为什么?
//: initialization/OverloadingVarargs2.java
// {CompileTimeError} (Won't compile)
public class OverloadingVarargs2 {
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(Character... args) {
System.out.print("second");
}
public static void main(String[] args) {
f(1, 'a');
f('a', 'b');
}
} ///:~
//: initialization/OverloadingVarargs3.java
public class OverloadingVarargs3 {
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(char c, Character... args) {
System.out.println("second");
}
public static void main(String[] args) {
f(1, 'a');
f('a', 'b');
}
} /* Output:
first
second
*///:~
复制代码
作者:
仲伟
时间:
2013-5-9 21:38
第一个重载的时候
public static void main(String[] args) {
f(1, 'a');
f('a');
}
这样调,试试
作者:
黑马-王双
时间:
2013-5-9 21:47
本帖最后由 黑马-王双 于 2013-5-9 22:03 编辑
class Overloading2
{
static void f(float i,Character... args)
{
System.out.println("first");
}
static void f(Character... args)
{
System.out.println("second");
}
public static void main(String[] args)
{
f(1,'a');
f('a'+0;'b');
}
}
Character... args 表示任意多个Character类型的参数,可以是1个或多个。
出错时因为 f('a','b')对两个方法都匹配,系统不知道你要调用的是哪一个。
要么改成上面这样打印结果是
first
first
要么就是你写得static void f(char c ,Character... args)
作者:
白磊
时间:
2013-5-9 22:21
OverloadingVarargs2.java无法通过编译这一句 f('a', 'b'); 是因为下面这两个方法都满足 这一句的调用条件,系统不知道该调用哪一个,所以会报错。
static void f(float i, Character... args) {
System.out.println("first");
}
static void f(Character... args) {
System.out.print("second");
}
作者:
金辉
时间:
2013-5-9 22:33
对 f 的引用不明确, f('a', 'b');都匹配
作者:
张变
时间:
2014-2-25 14:23
OverloadingVarargs2.java中f('a', 'b')方法找不到已声明的匹配参数(类型或个数)的方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2