A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 苑桥别馆 中级黑马   /  2014-11-19 23:46  /  1473 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么方法的返回值不能区别函数重载

14 个回复

倒序浏览
如果仅返回值不同,当函数名和参数列表都相同时,参数到底传递到哪里,这时该调用谁呢?
回复 使用道具 举报 1 0
我把函数名和参数列表抽象理解为入口,而返回值类型理解为出口,而进入的限定条件条件设置在出口是没有意义的……我这个说法比较另类,不建议你采纳……
回复 使用道具 举报
重载有个底线 就是你调用重载方法的时候 要能从你写出来的代码看出你要使用父类还是子类方法
你使用方法的时候 代码中只会出现方法名和参数列表 不会涉及返回值 所以 返回值不能作为区分子父类方法的根据
回复 使用道具 举报 1 0
如果两个函数的参数列表相同,只是返回值不同的话,当调用这个方法时,虚拟机不知道该把参数传到哪个函数内
回复 使用道具 举报
因为可能仅是函数的返回值不一样,那么在函数调用的时候,函数名和参数列表一致,就出现了调用的不确定性。不知调用那个函数
回复 使用道具 举报
如下:
①:void  fun(int a){}
②:int fun(int a){}
首先,这不是重载,编译也不会通过!
如果有这样一句语句:int  sum=fun();  编译器肯定会知道,你要执行的是第二的方法,但是,试想一下,如果你在调用的时候直接这样写fun(45);编译器会知道你要执行的是哪一个方法吗?肯定不会,所以不可能通过方法的返回值来判断重载,而是要通过方法签名来判断
回复 使用道具 举报
首先当你调用名称相同的函数时,系统会先去找它的入口,参数的不同会得到不同的入口,从而区分函数,如果仅仅是返回值不同的话,系统则不能够区分,希望能解答你的问题
回复 使用道具 举报
首先当你调用名称相同的函数时,系统会先去找它的入口,参数的不同会得到不同的入口,从而区分函数,如果仅仅是返回值不同的话,系统则不能够区分,希望能解答你的问题
回复 使用道具 举报
返回值不同返回类型也就不同 重载的特性是成员变量的长短和方法名字  与返回值无关
回复 使用道具 举报
java里允许调用一个有返回值的方法的时候不必将返回值赋给变量;
回复 使用道具 举报
java里允许调用一个有返回值的方法的时候不必将返回值赋给变量;这样JVM就不知道你调用的是有返回值的还是没返回值的.如class Test{ public static void testMethod(){} public static int testMethod(){}//姑且假设允许吧  public static void main(String[] args){  int i = testMethod();//这个还说的过去 知道是调用哪个  testMethod();//这个就无法判断调用哪个方法了 }  }:
回复 使用道具 举报
米家小九 来自手机 中级黑马 2014-11-22 06:13:43
13#
一模一样的门,不知道该进哪个啊
回复 使用道具 举报
如果返回值可以区分的话,那方法名跟参数列表如果都相同,那调用的时候到底是调用那个方法那?
回复 使用道具 举报
嗯,出现调用的不确定性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马