方法的重载和返回值有关么,如果俩个方法名字相同,参数相同,返回值类型不同,如何区分,详解,谢谢了

 我来答
菜腿很菜的牛同学
推荐于2018-03-06
知道答主
回答量:2
采纳率:100%
帮助的人:2143
展开全部

因为在编译器层面,用来判断是否重载的方法是class文件的特殊签名,特殊签名只与名称和参数有关,所以方法的重载是与返回值无关的。

但是有一种特殊情况

这种情况下java原有的javac编译器可以编译通过,java的泛型使用类型擦除(伪泛型),即不管你有没有写泛型但是在编译器层面都是没有泛型的,但是,因为类型擦除造成了一种特殊情况,因为泛型的加入特殊签名虽然相同,即不符合重载但是方法签名相同,所以他们可以存在于一个class文件内。

luanxuan75
2012-03-13
知道答主
回答量:13
采纳率:0%
帮助的人:2.1万
展开全部
至于原因,可以这样理解,你调用一个方法,如果有多个方法同名,系统必须要如果只有返回值的不同,很多情况系统是不可能得到有效的判断条件的,比如:
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
或许_该懂了
推荐于2017-09-28
知道答主
回答量:12
采纳率:0%
帮助的人:15万
展开全部
一听就知道这是刚刚才学习编程的程序员,是这样的:方法的重载和返回值没有关系。
方法名必须相同
方法参数类型、个数至少有一项不同
方法的返回类型可以不相同
方法的修饰符可以不相同
例:
public void test(){
};
public int test(){
return 0;
};
public String test(){
return "";
};
public void test(int i){
};
追问
如果方法里有参数,比如public int show(int a,double b){
return (a+b);
}
public int show(double b,int a){
return (a+b);
}
参数顺序不同,也成立,不在乎返回值类型
追答
是的,返回类型不在意的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
追忆惘然107
2012-03-13
知道答主
回答量:32
采纳率:0%
帮助的人:9.2万
展开全部
楼上正解!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
邗启3V
2012-03-13 · TA获得超过7271个赞
知道大有可为答主
回答量:1413
采纳率:100%
帮助的人:1392万
展开全部
跟返回类型没有关系
具体区分用哪个,只跟你调用该方法的时候 传的参数有关
匹配参数,然后选择方法
追问
public float withdraw(float anAccount){
return super.withdraw(anAccount+1.25f);
}

public double withraw(float balance){
balance=super.getBalance();
balance-=1.25f;
return balance;
},这个也没错啊?俩个参数类型相同的啊
书上说俩个方法声明中,参数类型个数均相同,编译错误,即使返回类型不同,无法编译,可是上边的可以编译,没有错误啊,求详解
追答
withdraw和withraw  你注意看啊,两个方法名字不一样,这已经是两个方法,不是重载了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式