楼主我十分肯定你的short函数名不对,eclipse报错,而且Sup之后编译还是有问题,函数名一定是show,这道题考的是函数签名,返回值不属于函数签名的一部分,也就是说,两个或者多个同名函数,jvm是通过各个同名函数的参数类型、参数个数或者参数顺序的不同区别不同的函数的,只要同名函数的参数类型、个数、顺序有一个或者多个不同时,就认为是不同的函数,但是,如果同名函数只有返回值不同,而紧跟返回值后面书写的函数名、参数情况完全一样的话,jvm是区分不了的,认为是同一个函数,这样就出现了函数重复定义的错误。没看晕吧?!下面给几个例子:
假如我们定义了两个名字同为MyFun的方法(就是上文说的函数,写得可能有点不严谨,见谅!):
- int MyFun(int i,double j)
复制代码
是正确的,因为两个方法的参数类型不同。
- int MyFun(int i,int j,int k)
复制代码
是正确的,因为两个方法的参数个数不同。
- int MyFun(int i, double j)
复制代码- int MyFun(double j,int i)
复制代码
是正确的,因为两个方法的顺序不同。
以上三种情况总结起来就是:只要方法的参数“长相”不一样,就是不一样的函数
在看下面的代码:
- double MyFun(int i,int j)
复制代码
这两个方法的名字,参数“长相”完全相同,但是只有返回值不同,这时就出现了问题,java标准(也包括其他大部分高级语言),并不承认这样定义的方法是不同的方法,于是就出现了重复定义。楼主可以去问问度娘有关【函数签名】的相关信息,就应该会明白了 |