A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 我为你着迷 金牌黑马   /  2014-3-10 23:03  /  1628 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

void show(int a,char b,double c)和double show(int x,char y,double z)  这两哥们没有重载
毕老师讲的时候没听太懂,麻烦大家帮忙详细解释下好吗  ,谢谢了!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

14 个回复

倒序浏览
重载 要求是同名的函数,参数个数或参数类型不同即可,特点是与参数列表有关,与返回类型无关。
1、参数列表虽然变量名不同,但是参数类型相同。
2、一个返回类型是void,一个是double,且与返回类型无关。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
void show(int a,char b,double c)和double show(int x,char y,double z)
2个函数只是返回值类型不同,这样的2个函数放在同一类中时Java虚拟机没办法识别show(int x,char y,double z)的返回值类型到底是什么,会导致编译不通过,是不允许的

重载的判别条件是:同一个类中,同名函数,函数的参数列表不同(参数个数或参数类型或参数顺序不同)。
重载与返回值类型无关,返回值类型相同与否都不影响两个函数间是否是重载,只看上面的判别条件。

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
两个函数是重载啦
回复 使用道具 举报
首先,说一下重载的意思:重载就是要求函数的名称必须是一模一样的但是要求函数的参数不能是完全一样的就像你给出的例子中虽然参数名称不一样但是类型是一样的,重载要求函数的参数个数或者类型不能是完全相同的。
回复 使用道具 举报 0 1
1,重载和返回值没有关系。
2,重载必须和原函数名字相同。
3,参数列表必须不同。
回复 使用道具 举报
松毛 高级黑马 2014-3-11 09:31:25
7#
重载与返回值类型无关!
回复 使用道具 举报
重载是出现在同一个类中,它不会带来安全隐患,其实重载就是方法名称相同,只有参数列表不同而已,所谓的参数列表就包含了参数类型,和参数个数。
回复 使用道具 举报
  1. void show(int a,char b,double c)
  2. double show(int x,char y,double z)  //这两哥们没有重载
复制代码


重载在同一个类中,方法名相同,参数列表不同,
但是可以改变返回值类型,重载和返回值类型无关
这两个函数除了返回值类型不同以外,其他都一样

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
重载; 同类定义了两上同名方法们拥有同参数列表
重载条件:参数同
具体:a.数相同
  b.类型同
  c.顺序同
public void A(int a){};
public void A(string a ){};

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报

void show(int a,char b,double c)和double show(int x,char y,double z),没有重载,因为参数类型一样,变量名可以随便起的。这两个函数不可以存在于一个类中,因为一个有返回值,一个没返回值。
重载和返回值无关,只看参数列表。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
谢谢大家
回复 使用道具 举报
如果多个方法有相同的名字,不同的参数,便产生了重载。编译器必须挑选出具体执行哪个方法,它通过调用各个方法给出的参数类型与特定方法调用所使用的值类型进行匹配来挑选出相应的方法。如果编译器找不到匹配的参数,或者找出多个可能的匹配,就会产生编译时错误。

要完整的描述一个方法,需要指出方法名以及参数类型。这叫做方法的签名。而返回类型不是方法签名的一部分,也就是说,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
void show(int a,char b,double c)和double show(int x,char y,double z)  
首先,这两者没有构成重载;
其次,明确重载定义和特点
   --重载只看同名函数的不同参数列表,所谓参数列表的区别有:01.参数个数  02.参数类型  03.参数顺序
   --三个注意:01.必须是同名函数
                     02.参数列表请关注类型,而不是变量名称
                     03.与返回值无关
   总之,重载只需关注方法签名
最后,请参考Thinking in Java第四版  P72
The method name and argument list( which is called the signature of the method)uniquely identify that method.
回复 使用道具 举报
而你给的例子,两者的方法签名相同就不能区别----即在编译器看来是同一函数
既然是同一函数,编译器当然不会安装重载来处理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马