黑马程序员技术交流社区

标题: [已解决]关于不同返回值的方法问题 [打印本页]

作者: 张洁    时间: 2012-6-12 11:45
标题: [已解决]关于不同返回值的方法问题
本帖最后由 张洁 于 2012-6-12 12:39 编辑

public class ReturnDemo {
public static void main(String[] args) {
  A temA = new A();
  temA.function();// 本来想测试是运行哪一个,但是最终运行错误,想问下为什么
}
}
class A {
public void function() {
  System.out.println("function void");
}

public int function() {
  System.out.println("function int");
  return 1;
}
}


作者: 马东华    时间: 2012-6-12 11:58
因为你的函数名相同啊,如果要重载的话,只能是参数类型不同。
作者: 吴小铁你好    时间: 2012-6-12 12:00
楼主你这有问题,在同一个类中,不允许存在具有相同方法名方法,即使该方法的返回类型不相同也不行。
作者: 唐志兵    时间: 2012-6-12 12:02
java中要构成函数重载的话,首先要求两个函数的参数类型不同,或者参数个数不同。

如果仅仅是返回值不同的话是不能构成函数重载的。
作者: 何拴绪    时间: 2012-6-12 12:04
方法的返回值不同不能作为重载的条件,重载的方法参数的类型和个数可以可以不同。
作者: 孙峰    时间: 2012-6-12 12:05
因为两个function()方法都定义的是public,所以在本类中都有访问权限,就分不清是哪个了。   再一个,要是想同名的话,可以对参数列表进行修改即可。 通过不同的参数确定使用哪个方法
作者: 何旭栋    时间: 2012-6-12 12:12
本帖最后由 何旭栋 于 2012-6-12 12:14 编辑

这个编译必须报错,两个不同返回类型function() 方法,计算机无法识别调用哪个
重载是传递参数的类型,个数可以不同,但是方法返回类型必须相同,多看下毕老师视频吧
作者: 陈永波    时间: 2012-6-12 12:17
函数的重载
在我们定义函数的时候, 可以定义多个函数名相同的函数, 但是参数列表必须不同.
参数列表不同包括个数, 类型, 顺序不同.
函数的重载和返回值类型无关.
class Overload {
       
        public static void main(String[] args) {
                        }       
       
        static void fun() {
                System.out.println("fun()");
        }
       
        static void fun(long l) {
                System.out.println("fun(long l)");
        }
       
        static void fun(int i) {
                System.out.println("fun(int i)");
        }
       
        static void fun(short s) {
                System.out.println("fun(short s)");
        }
       
        static void fun(int i, int j) {
                System.out.println("fun(int i, int j)");
        }
       
        static void fun(boolean b) {
                System.out.println("fun(boolean b)");
        }
       
        static void fun(int i, boolean b) {
                System.out.println("fun(int i, boolean b)");
        }
       
        static void fun(boolean b, int i) {
                System.out.println("fun(boolean b, int i)");
        }

}与返回值类型无关.
作者: 李伟    时间: 2012-6-12 12:24
函数重载必须是函数的参数类型或者参数个数不同,与返回值类型无关。
作者: 黄奕豪    时间: 2012-6-12 12:26
哥,你都二十几分的人了,没必要吧!!假如你有两个手下都叫手下,你要拿瓶水,你叫一声“手下拿水”,两个手下不明白你在叫谁,两个为了献殷勤不打架了了么?
作者: 张洁    时间: 2012-6-12 12:36
黄奕豪 发表于 2012-6-12 12:26
哥,你都二十几分的人了,没必要吧!!假如你有两个手下都叫手下,你要拿瓶水,你叫一声“手下拿水”,两个 ...

应该喊姐哟;P
作者: 陈剑华    时间: 2012-6-12 12:44
黄奕豪 发表于 2012-6-12 12:26
哥,你都二十几分的人了,没必要吧!!假如你有两个手下都叫手下,你要拿瓶水,你叫一声“手下拿水”,两个 ...

我赞同你的质疑,不过你的比喻我觉得不太准确,如果是重载的话,大家都一个名字,可他们不会打架;P
作者: 黄奕豪    时间: 2012-6-12 16:48
张洁 发表于 2012-6-12 12:36
应该喊姐哟

{:2_33:}竟然是大妞子~~




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