黑马程序员技术交流社区
标题:
关于函数重载的问题,问下原理!
[打印本页]
作者:
彭怀志
时间:
2012-2-3 11:42
标题:
关于函数重载的问题,问下原理!
本帖最后由 彭怀志 于 2012-2-3 12:46 编辑
以下三个个函数 1. void test( int a;double b;char c)
2. int test( int m;char n; double o)
3. double test( int x;int y;char z)
1和2函数重载了,因为参数类型不一样。但1和3没有重载,原因说是这个两个函数不能同时出现在主函数当中,了解到函数重载与返回值类型没有关系的吗,所以求解释,有原理更好;
作者:
林铁柱
时间:
2012-2-3 12:00
只有返回值类型不同的函数不能重载
(注意只有两个字,也就是说在参数一致的情况下 不能重载)
重载函数必须是参数个数或类型不同(强调参数必须不一致)
作者:
刘基军
时间:
2012-2-3 12:18
重载:
1.方法名称一样
2.参数不一样(个数或类型不同)
方法返回值不作为判断依据,
另外,代码测试是正常,
class TestDemo
{
void test( int a,double b,char c)
{
System.out.println(a+","+b+","+c);
}
int test( int m,char n, double o)
{
System.out.println(m+","+n+","+o);
return 1;
}
double test( int x,int y,char z)
{
System.out.println(x+","+y+","+z);
return 1.0;
}
public static void main (String args[])
{
TestDemo td = new TestDemo();
td.test(1,1.0,'a');
td.test(1,'a',1.0);
td.test(1,1,'a');
}
}
复制代码
作者:
王文龙
时间:
2012-2-3 13:50
方法重载在保证方法名相同的情况下,
与返回值类型无关,只与参数的个数和类型有关.
eg:int get(int a,int b)与void get(int a,int b),
当创建对象调用get方法时,JVM不能识别此对象调用的是返回哪个类型的方法.
作者:
荣凯旋
时间:
2012-2-3 14:29
你们回答的你看就知道没仔细看他提问的问题~
作者:
许涛
时间:
2012-2-3 15:54
本帖最后由 许涛 于 2012-2-3 15:54 编辑
回楼主:重载和返回值类型没关系
重载与否只和参数列表有关
具体来说参数列表有两个方面,一个是参数个数,一个数参数类型(注意:参数名不作为区分依据)
原理方面可以这样理解:
好比区分双胞胎,可以通过胎记一样。当你调用一个方法的时候,如果有多个方法同名,系统怎样知道你要调用哪个方法呢?此时的参数个数和类型就是那个所谓的“胎记”。其它的像返回值类型和参数名什么的都是浮云~~这样或许会好理解一点 : )
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2