黑马程序员技术交流社区

标题: 关于重载,f为什么这个函数不可以和给定函数同时存在与.... [打印本页]

作者: 刘凯旋    时间: 2014-3-18 14:43
标题: 关于重载,f为什么这个函数不可以和给定函数同时存在与....
本帖最后由 刘凯旋 于 2014-3-19 10:18 编辑

void show(int a,char b,double c){}

a.
void show(int x,char y,double z){}//没有,因为和原函数一样。

b.
int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
c.

void show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。

d.
boolean show(int c,char b){}//重载了,因为参数个数不同。

e.
void show(double c){}//重载了,因为参数个数不同。

f.
double show(int x,char y,double z){}//没有,这个函数不可以和给定函数同时存在与一个类中。为什么这个函数不可以和给定函数同时存在与一个类中?



作者: 无道    时间: 2014-3-18 15:02
因为它们的参数类型,函数名都是相同的,当实际传入     12, a, 12.2   时,此时的jvm不知道你想要的结果是什么样的,所以它也不知道调用那个函数。jvm不知道你想要什么样的返回值。
作者: 水蓝    时间: 2014-3-18 15:10
函数是否重载,看函数名 和 参数表类型
给你的函数声明重新编号:
  1.         void show(int a,char b,double c){}               //1
  2.         void show(int x,char y,double z){}                //2
  3.         int show(int a,double c,char b){}                  //3
  4.         void show(int a,double c,char b){}               //4
  5.         boolean show(int c,char b){}                        //5
  6.         void show(double c){}                                  //6
  7.         double show(int x,char y,double z){}           //7
复制代码

1、2、7参数表中的参数类型都是相同的,所以不能同时出现。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2