黑马程序员技术交流社区

标题: 关于重载函数的疑问 [打印本页]

作者: 陈雨    时间: 2013-3-20 16:28
标题: 关于重载函数的疑问
本帖最后由 陈雨 于 2013-3-20 17:18 编辑

在毕老师关于重载视频中有个练习问是否重载:
原函数:void show (int a, char b, double c){}
double show(int x,char y,double z){}//毕老师说,没有重载,原因是这个函数不可以和给定函数同时存在一个类中.
因为还没学到"类"对这句话不是很懂.因为把double换成 int,boolean又是重载函数.能否详细解释下.



作者: 李阳阳    时间: 2013-3-20 16:39
标题: 而如果两个同名函数如果不是重载关系而在同一个类中的.....
本帖最后由 李阳阳 于 2013-3-20 16:52 编辑

   方法的重载是指在一个类或接口中可以有多个相同名称的方法,不过这些相同名称的方法具有不同的形参,
及参数个数的不同或参数的类型不同。而两个同名函数如果不是重载关系而存在同一个类中的话,那么等到调
用的时候就不知道调用哪个了。如:下面代码中有四个同名的show()方法,但是有不同的参数,
因此这四个就是重载的方法。
  1. class Test
  2. {
  3.         void show()//没有参数的show()方法
  4.         {
  5.                 System.out.println("一个参数也没有");
  6.         }
  7.         void show(String s)//有一个String类型参数的show()方法
  8.         {
  9.                 System.out.println("有一个String类型参数的show()方法,你传的参数时是:"+s);
  10.         }
  11.         void show(int a)//有一个int类型参数的show()方法
  12.         {
  13.                 System.out.println("有一个int类型参数的show()方法,你传的参数时是:"+a);
  14.         }
  15.         void show(String s1,String s2)//有两个String类型参数的show()方法
  16.         {
  17.                 System.out.println("有两个String类型参数的show()方法,你传的参数时是"+s1+"和"+s2);
  18.         }
  19. }
复制代码

作者: 明锦添    时间: 2013-3-20 16:47
关于重载,只要记住两点
1.函数名
2.参数列表
函数名相同,参数列表不同(参数列表顺序不同也算),就是重载
和返回值类型没有关系,你说的double,int和boolean都是返回值类型
作者: 陈雨    时间: 2013-3-20 16:52
明锦添 发表于 2013-3-20 16:47
关于重载,只要记住两点
1.函数名
2.参数列表

问题就boolean的函数类型在这里不是重载函数
作者: 山西_李帅    时间: 2013-3-20 17:50
兄弟这是两个类中的方法吧?重载你可以理解为在同一个类中才会发生。
作者: 明锦添    时间: 2013-3-20 19:32
陈雨 发表于 2013-3-20 16:52
问题就boolean的函数类型在这里不是重载函数

这两条语句函数名和参数列表都是一模一样的,是不能在同一个类中出现的,所以就不存在重载,不知道说什么好了,视频你还是多退回去看几遍就知道了




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