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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘丁 黑马帝   /  2012-2-9 13:15  /  1758 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘丁 于 2012-2-9 13:49 编辑

如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载。

评分

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

查看全部评分

7 个回复

倒序浏览
这是不行的,因为我们有时候调用一个方法时也可以不定义返回结果变量,即不要关心其返回结果,例如,我们调用map.remove(key)方法时,虽然remove方法有返回值,但是我们通常都不会定义接收返回结果的变量,这时候假设该类中有两个名称和参数列表完全相同的方法,仅仅是返回类型不同,java就无法确定编程者倒底是想调用哪个方法了,因为它无法通过返回结果类型来判断。

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
重载和返回值类型没关系

重载与否只和参数列表有关
具体来说参数列表有两个方面:
一个是参数个数,一个数参数类型
参数名和返回值类型不作为区分依据

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1

查看全部评分

回复 使用道具 举报
重载必须要满足的条件:
1.方法名相同。
2.参数列表不同。

其他的条件不关心

问题:如果两个方法的参数列表完全一样,是否可以让它们的返回值不同来实现重载。
答:不行。
列如:
public Object method(String str){
  return str;
}
public String method(String str){
  return str;
}
在main方法中调用method("hello");这两个方法都对,到底调用哪个?你懂得

所以不行.

评分

参与人数 1技术分 +1 收起 理由
唐秀启 + 1 赞一个!

查看全部评分

回复 使用道具 举报
重载要求返回值----必须----不一样
回复 使用道具 举报
重载定义:在统一各类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。  
   ps:同名函数只能控制参数列表和参数类型来进行重载。
回复 使用道具 举报
任奇 黑马帝 2012-2-9 13:52:04
7#
每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。因此,每个重载方法的参数的类型和(或)数量必须是不同的。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。

评分

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

查看全部评分

回复 使用道具 举报
答案是肯定不能的。看看上面重载的必须条件就可以明白了。
不过我要说的是在我们学习完JDK1.5新特性之后,可以通过
可变参数来来代替方法的重载,比如我们写一个简单的打印对象
用方法的重载:
util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);
用可变参数:
public void write(Object... objs) {
   for (Object obj: objs)
      System.out.println(obj);
}
调用时只需传递不同的参数就可以了。

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马