黑马程序员技术交流社区

标题: 关于返回值 [打印本页]

作者: 苑桥别馆    时间: 2014-11-19 23:46
标题: 关于返回值
为什么方法的返回值不能区别函数重载
作者: 杨佳名    时间: 2014-11-20 00:41
如果仅返回值不同,当函数名和参数列表都相同时,参数到底传递到哪里,这时该调用谁呢?
作者: 迷失的小Z    时间: 2014-11-20 00:53
我把函数名和参数列表抽象理解为入口,而返回值类型理解为出口,而进入的限定条件条件设置在出口是没有意义的……我这个说法比较另类,不建议你采纳……
作者: 郑飞    时间: 2014-11-20 01:04
重载有个底线 就是你调用重载方法的时候 要能从你写出来的代码看出你要使用父类还是子类方法
你使用方法的时候 代码中只会出现方法名和参数列表 不会涉及返回值 所以 返回值不能作为区分子父类方法的根据
作者: hailong    时间: 2014-11-20 07:56
如果两个函数的参数列表相同,只是返回值不同的话,当调用这个方法时,虚拟机不知道该把参数传到哪个函数内
作者: zhangyangLengen    时间: 2014-11-20 08:37
因为可能仅是函数的返回值不一样,那么在函数调用的时候,函数名和参数列表一致,就出现了调用的不确定性。不知调用那个函数
作者: 王小忠    时间: 2014-11-20 14:45
如下:
①:void  fun(int a){}
②:int fun(int a){}
首先,这不是重载,编译也不会通过!
如果有这样一句语句:int  sum=fun();  编译器肯定会知道,你要执行的是第二的方法,但是,试想一下,如果你在调用的时候直接这样写fun(45);编译器会知道你要执行的是哪一个方法吗?肯定不会,所以不可能通过方法的返回值来判断重载,而是要通过方法签名来判断
作者: 下一站    时间: 2014-11-20 21:11
首先当你调用名称相同的函数时,系统会先去找它的入口,参数的不同会得到不同的入口,从而区分函数,如果仅仅是返回值不同的话,系统则不能够区分,希望能解答你的问题
作者: 下一站    时间: 2014-11-20 21:13
首先当你调用名称相同的函数时,系统会先去找它的入口,参数的不同会得到不同的入口,从而区分函数,如果仅仅是返回值不同的话,系统则不能够区分,希望能解答你的问题
作者: ls61532529    时间: 2014-11-21 00:02
返回值不同返回类型也就不同 重载的特性是成员变量的长短和方法名字  与返回值无关
作者: 二月的雨    时间: 2014-11-21 07:22
java里允许调用一个有返回值的方法的时候不必将返回值赋给变量;
作者: 二月的雨    时间: 2014-11-21 07:25
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
一模一样的门,不知道该进哪个啊
作者: 丑小子799    时间: 2014-11-22 06:36
如果返回值可以区分的话,那方法名跟参数列表如果都相同,那调用的时候到底是调用那个方法那?
作者: zhangyangLengen    时间: 2014-11-22 08:11
嗯,出现调用的不确定性




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2