java重载的简单问题,新手求解答。
public class MyClass{
public void setVar(int a,int b,float c){}
}
下面哪些是对setVar()的重载?()
A.private void setVar(int a,float b,int b){}
B.protected void setVar(int x,int y,float z){}
C.public int setVar(int a,float c,int b){return a;}
D.public int setVar(int a,float c){return a;}
求高手解答并告知原因,谢谢。
------解决方案--------------------A、C、D都是吧,只要函数名相同,参数类型不一致就构成重载,与返回值和throws clause无关
但是A和C不能同时出现,因为A和C的signature一样(函数名和参数合起来叫signature)
B放进去会出错,B和类中原有方法是的signature是一样的
------解决方案--------------------个人认为答案为ACD,因为重载是在同一个类中,方法名相同且参数列表不同的方法为重载。希望参考下
------解决方案--------------------方法重载是指一个类中有多个方法具有相同的名字,但这些方法的参数必须不同,参数不同包括参数个数不同、参数类型不同。
由此可以判断A、C、D都属于对原方法setVar的重载,但A和C选项不能同时出现,因为他们的参数类型相同。方法的重载只与参数相关,与修饰符和返回类型没有关系。
其实写一个程序试一下就行了,相同类型和个数的参数,不同的修饰符和返回类型,程序会报错的
------解决方案--------------------