黑马程序员技术交流社区

标题: 关于JAVA基础,求教 [打印本页]

作者: 唐林渊    时间: 2012-2-23 21:08
标题: 关于JAVA基础,求教
请问大家,为什么一个类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法。。
作者: 朱皓    时间: 2012-2-23 21:19
哎,我还是用代码说明吧
        class A
        {
                public void fun()
                {
                   System.out.println("apple");
                }
               
                public int fun()
                {
                        System.out.println("dog");
                        return 3;
                }
               
        }

        public class test
        {
                public static void main(String args[]){
       
                        A temA=new A();
                        temA.fun();//你认为JAVA虚拟机会执行那个方法
                }
        }               
        }

JAVA 虚拟机自己也不知道要执行那个方法,所以他就晕了,所以类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法
作者: 刘凤山    时间: 2012-2-23 21:22
要是有两个系统就不知道先调用那一个了。
作者: 唐兴旺    时间: 2012-2-23 21:28
两个方法名相同,参数列表相同,首先你传值,他都无法判断使用哪个,返回值类型不同,那是方法执行后的事。java虚拟机都不知道该用哪一个方法,也就没有什么返回值,不用考虑了。
你是不是看到重载了?
作者: 张一凡    时间: 2012-2-23 22:07
方法名相同,参数类型或个数不同,虚拟机还可以接受,这样就是函数的重载。
而像你说的,方法名相同,参数列表也相同的话,那虚拟机就接受不鸟了,它会崩溃的。
另外方法名相同时,虚拟机就看参数列表,而参数列表与返回值类型没任何关系。
所以为了别让虚拟机崩溃,一个类里面可以有2个方法名相同的函数(方法),但是决不可以有2个相同的参数列表。
作者: 蒋昌宏    时间: 2012-2-23 22:37
下列哪些答案和给定的show方法重载了?
void show(double a,boolean b,char c){}

A
void show(boolean b,double a,char c){}//重载了,类型不同。

B
int show(double x,boolean y,char z){}//没有重载,而且这个不能和给定函数存在于一个类中。会引发调用的不确定性。

C
void show(int a,int b,int c){}//重载。类型不同。


D
void show(double x,boolean y,char z){}//不重载,一模一样。不允许存在同一个类中,调用的不确定性。


E
boolean show(double a,double b,char c){}//重载,类型不同。

F
int show(int a,char c){}//重载,个数不同。
作者: 蒋昌宏    时间: 2012-2-23 22:37
你说的就是B...
作者: 【专】【属】    时间: 2012-2-24 10:09
我们在调用一个方法是,可能直接去调用而它的返回值与我们无关,所以如果有两个不同的返回值,jvm就不知道要那一个方法。
作者: 雷楚光    时间: 2012-2-24 14:28
当方法名相同,并且参数列表相同,java怎么知道该调用那个方法,返回那个结果。
就像你去买烟,你和老板说:来包烟。这是返回的值是:各种不同的烟。那么老板怎么知道给你拿哪种烟。
作者: ♂诸侯♂    时间: 2012-2-24 18:13
蒋昌宏 发表于 2012-2-23 22:37
下列哪些答案和给定的show方法重载了?
void show(double a,boolean b,char c){}

顶一下六楼。




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