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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 唐林渊 黑马帝   /  2012-2-23 21:08  /  1936 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问大家,为什么一个类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法。。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

9 个回复

倒序浏览
哎,我还是用代码说明吧
        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 虚拟机自己也不知道要执行那个方法,所以他就晕了,所以类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
要是有两个系统就不知道先调用那一个了。
回复 使用道具 举报
两个方法名相同,参数列表相同,首先你传值,他都无法判断使用哪个,返回值类型不同,那是方法执行后的事。java虚拟机都不知道该用哪一个方法,也就没有什么返回值,不用考虑了。
你是不是看到重载了?
回复 使用道具 举报
方法名相同,参数类型或个数不同,虚拟机还可以接受,这样就是函数的重载。
而像你说的,方法名相同,参数列表也相同的话,那虚拟机就接受不鸟了,它会崩溃的。
另外方法名相同时,虚拟机就看参数列表,而参数列表与返回值类型没任何关系。
所以为了别让虚拟机崩溃,一个类里面可以有2个方法名相同的函数(方法),但是决不可以有2个相同的参数列表。

评分

参与人数 2技术分 +1 黑马币 +5 收起 理由
admin + 1
♂诸侯♂ + 5 赞一个!

查看全部评分

回复 使用道具 举报
下列哪些答案和给定的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){}//重载,个数不同。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
蒋昌宏 黑马帝 2012-2-23 22:37:46
7#
你说的就是B...
回复 使用道具 举报
我们在调用一个方法是,可能直接去调用而它的返回值与我们无关,所以如果有两个不同的返回值,jvm就不知道要那一个方法。
回复 使用道具 举报
当方法名相同,并且参数列表相同,java怎么知道该调用那个方法,返回那个结果。
就像你去买烟,你和老板说:来包烟。这是返回的值是:各种不同的烟。那么老板怎么知道给你拿哪种烟。
回复 使用道具 举报
蒋昌宏 发表于 2012-2-23 22:37
下列哪些答案和给定的show方法重载了?
void show(double a,boolean b,char c){}

顶一下六楼。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马