int show (int a, int b) {return 0;}
public short show (int a, int b) {return 0;}
为什么下面的函数不可以和上面的函数出现在同一类中,或者子父类中?作者: 逆袭的风 时间: 2013-8-2 01:05
上下两个函数,函数名相同,参数类型相同,定义在同一个类中,会出现函数重名。
另外,再说一下函数的重载
重载的两个函数的函数名相同,而参数类型不同,这个与返回值类型无关,也就是是说和返回int型还是short型无关作者: doitforyou 时间: 2013-8-2 01:17
1.在同一个类中,重名的函数必须要构成重载,即参数列表不同才可以同时存在,
因为虚拟机在调用函数的时候,如果函数同名,则通过参数类型来决定调用哪个。
如果上述两个函数在同一个类中存在,会造成调用混乱,所以不会通过编译。
2.对于子父类中,如果一个类作为另一个类的子类,自然也会继承父类的属性和方法,原理其实还是一样的,
主要看你调用时会不会让编译器识别,对于父类中的方法可以重写,上述两个方法既不构成重载,也不属于重写,所以不能同时存在。
总结:两个方法能否同时存在,主要还是看调用时虚拟机可不可以识别。还有什么疑问可以继续说,共同进步。
希望能帮到你 共同学习哈作者: 一直有你 时间: 2013-8-2 08:07
在同一个类中定义方法时,方法名和参数的类型和个数都相同的话是不允许的。作者: breaveheart 时间: 2013-8-2 09:16
int show (int a, int b) {return 0;}
public short show (int a, int b) {return 0;}
这个其实是同一个函数,int 和 public short只是对函数show(int a,int b)
的修饰。而同一个类里面不能同时存在相同的函数。
如果想同时存在,你可以把后一个改成show(shor a,int b)之类的,
这样传入的参数不同,只会算重载,那么便可以同时存在一个类中。作者: 单凯 时间: 2013-8-2 10:17
1,两个函数同名,在一个类中,叫做重载,但必须满足参数值类型或者个数不同;
2,两个函数同名,在父子类中,叫做重写,或者覆盖,必须满足返回类型,函数名,参数个数及类型完全相同;
你这俩函数不满足上述任何一个条件,所以都通不过编译作者: yan 时间: 2013-8-2 10:27
这两个函数出现在同一个类中的时候,重载的意思的是 函数名一样,参数列表不一样,而在你写的程序中,函数名和参数列表都一致,已经重名。
而在子父类中,子类可以继承父类,但是必须满足 返回值类型,函数名和参数列表一致,此时你给的条件也不满足,所以也无法通过编译作者: 耶稣说wō乖 时间: 2013-8-2 11:58
这个你可以具体参照一下毕老师关于函数重载的视频哦
里面第一段就显示了
重载的特点:与返回值类型无关,只看参数列表。
因此你的这个函数