黑马程序员技术交流社区

标题: 函数的重载是什么?如何判断两个函数重载? [打印本页]

作者: LTT    时间: 2015-5-2 11:05
标题: 函数的重载是什么?如何判断两个函数重载?
哈哈拜托了!

作者: 艺多不压身丶    时间: 2015-5-2 11:22
重载是看函数的标示符是否一样:
作者: 1017161726    时间: 2015-5-2 12:31
函数名相同,返回值类型相同,参数列表不一样。
三点符合了就是重载。

作者: 付长云    时间: 2015-5-2 12:33
去看书·······················
作者: 黄冬    时间: 2015-5-2 12:38
判断两个函数重载,先看函数名是否一样,不让谈不上重载;函数名相同的话,再看函数的形式参数列表,包括数据类型和数据个数两个元素,有一个不同就是正确的重载。
作者: 黄冬    时间: 2015-5-2 12:39
1017161726 发表于 2015-5-2 12:31
函数名相同,返回值类型相同,参数列表不一样。
三点符合了就是重载。

和返回值类型没有关系
作者: iverson    时间: 2015-5-2 12:44
方法名一样,参数不一样
作者: xfliyy    时间: 2015-5-2 12:49
1017161726 发表于 2015-5-2 12:31
函数名相同,返回值类型相同,参数列表不一样。
三点符合了就是重载。

不看返回值吧?
作者: Demomiku    时间: 2015-5-2 13:21
返回值不同就编译不通过了
作者: 2119391569    时间: 2015-5-2 13:22
函数的重载:在同一个类中,允许存在一个以上的同名函数(函数名一样),只要他们的参数个数或者参数类型不同即可(参数列表:参数个数和参数类型)
重载的特点:
与返回值无关,只看参数列表
重载的好处:
方便与阅读,优化了程序设计


什么时候用重载?
当定义的功能相同,但参与运算的未知内容不同。
那么,这时就定义一个函数名称以表示其功能,方便阅读,而通过参数列表的不同来区分多个同名函数
参数是有顺序的

多写一些函数重载的例子就明白了,例如:99乘法表中空参数的函数调用一样
就知道这么多,不足的地方请大神补充哈!

作者: 1017161726    时间: 2015-5-2 13:30
黄冬 发表于 2015-5-2 12:39
和返回值类型没有关系

有关系的。返回值类型必须要相同,否则编译不通过。因为不允许这样的两个函数在同一个类中出现。
作者: 1017161726    时间: 2015-5-2 13:35
xfliyy 发表于 2015-5-2 12:49
不看返回值吧?

老师讲过,返回值类型要相同。如果重载的两个函数返回值类型不一样,编译会报错的。这样的两个函数不允许同时出现。你理解的时候最好强记住这一点。
还有,参数列表要有顺序。否则也是重载。

作者: cyr    时间: 2015-5-2 15:12
1017161726 发表于 2015-5-2 12:31
函数名相同,返回值类型相同,参数列表不一样。
三点符合了就是重载。

在同一个类中,名称相同,参数列表不同即为重载,与返回值类型,访问权限等无关的。
作者: 1017161726    时间: 2015-5-2 17:21
cyr 发表于 2015-5-2 15:12
在同一个类中,名称相同,参数列表不同即为重载,与返回值类型,访问权限等无关的。 ...

你说的判断重载是对的。
我只是强调一下,返回值类型不可以不一样,否则会报错。
作者: cyr    时间: 2015-5-2 20:24
本帖最后由 cyr 于 2015-5-2 20:26 编辑
1017161726 发表于 2015-5-2 17:21
你说的判断重载是对的。
我只是强调一下,返回值类型不可以不一样,否则会报错。 ...

那我下面的代码算重载吧,返回值类型不一样的哟(ps编译运行都通过了)。你给解释解释:
  1. public class Test {

  2.         public static void main(String[] args) {

  3.                 Test test = new Test();
  4.                 int i = test.show(2);
  5.                 String string = test.show("hahaha");
  6.                 System.out.println("show(int)-->" + i);
  7.                 System.out.println("show(String)-->" + string);
  8.         }

  9.         public String show(String str) {
  10.                 return str;
  11.         }

  12.         public int show(int i) {
  13.                 return i;
  14.         }

  15. }
复制代码

作者: 1017161726    时间: 2015-5-2 20:57
cyr 发表于 2015-5-2 20:24
那我下面的代码算重载吧,返回值类型不一样的哟(ps编译运行都通过了)。你给解释解释:
...

不好意思,也许我没表达清楚。
你这样当然是可以的。
因为这两个函数本来参数列表就不一样,已经是重载了。
如果他俩的参数列表一样,都只有一个String,那是不允许的。
作者: 18561271203    时间: 2015-5-2 21:25
本帖最后由 18561271203 于 2015-5-2 21:26 编辑

函数的重载:函数名相同,参数列表不同,与返回值类型无关。
要区别函数的重写(子父类中):函数名相同,返回值类型相同,参数列表相同,函数体不同。
作者: IDhmpj    时间: 2015-5-2 21:38
函数的重载决定因素在参数列表,包括参数的类型,数量,顺序.三个因素有一个不相同就可以重载.JVM并不能通过返回值类型和权限修饰符来判断.但是函数名必须要一样,否则相当于申明一个新的方法.
作者: wangyu    时间: 2015-5-2 21:48
1017161726 发表于 2015-5-2 20:57
不好意思,也许我没表达清楚。
你这样当然是可以的。
因为这两个函数本来参数列表就不一样,已经是重载了 ...

所以说来说去就是和返回值类型没有关系,只要函数名一样,参数列表不一样就是重载了。
作者: 魔蝎座    时间: 2015-5-2 21:52
函数重载,函数名相同,参数个数或类型不同就是重载了
作者: 1017161726    时间: 2015-5-2 22:18
wangyu 发表于 2015-5-2 21:48
所以说来说去就是和返回值类型没有关系,只要函数名一样,参数列表不一样就是重载了。 ...

对对对。你说得对。。大神。。我说错了。
函数名一样,参数列表不一样,就是重载。当然也要避免返回值类型不一样的情况。
作者: 大西洋    时间: 2015-5-3 00:29
重载,就是把一个函数重新载入;
1、函数名相同,但是参数类型和个数不相同;如果都相同那就是重写了。。。
2、只能发生在一个class类中;
3、对权限没有要求
作者: wangyu    时间: 2015-5-3 11:28
1017161726 发表于 2015-5-2 22:18
对对对。你说得对。。大神。。我说错了。
函数名一样,参数列表不一样,就是重载。当然也要避免返回值类 ...

你干嘛老是强调返回值的问题?
情况1:返回值类型一样,函数名一样,参数列表不一样;  这是重载吧
情况2:返回值类型不一样,函数名一样,参数列表一样;   这会报错吧
情况3:返回值类型不一样,函数名一样,参数列表不一样; 这是重载吧

你看这三种情况,和返回值类型有毛的关系?他爱一样不一样,根本没有影响!
作者: 1017161726    时间: 2015-5-3 12:53
wangyu 发表于 2015-5-3 11:28
你干嘛老是强调返回值的问题?
情况1:返回值类型一样,函数名一样,参数列表不一样;  这是重载吧
情况2 ...

这样看来的确没有关系。
如果不考虑返回值,两个函数名一样参数列表一样的函数就已经不允许了。
重载是和返回值没有关系。
作者: xiaowen_wu    时间: 2015-5-3 13:12
楼上回答的好详细
作者: 0416_张威    时间: 2015-5-3 13:30
函数的重载就是函数名相同,参数列表或参数个数不同,与返回值类型无关
作者: wuyingtong    时间: 2015-5-3 13:32
学习了 函数重载
作者: zuoyou    时间: 2015-5-3 15:32
传递参数不同,其他的都一样。
作者: bboyXiaoNuo    时间: 2015-5-3 15:33
方法名相同,但是参数不同,构成重载
作者: tanzhixue    时间: 2015-5-3 16:09
你再看看定义 是不是方法名都相同相同 参数不同 就重载  和返回类型不同也是重载  
作者: 钱飞    时间: 2015-5-3 16:16
和返回值类型没关系,刚看的基础视频
作者: as12510    时间: 2015-5-3 16:35
重载就是一个类里面方法可以起一样的名字,前提是你里面的参数个数不一样,如果参数的类型不一样,那顺序不一样也可以
作者: yelebron    时间: 2015-5-3 16:52
自己看书啊!!
作者: 程梦真    时间: 2015-5-3 16:52
顶~。。。。。。。。。。。。




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