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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张英杰 黑马帝   /  2011-10-9 21:41  /  4316 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Demo
{
                int show(int a,int b){return 0;}
}
下面那些函数可以存在于Demo的子类中

A、public int show(int a,int b){return 0;}
B、private int show(int a,int b){return 0;}
C、private int show(int a,long b){return 0;}
D、private short show(int a,int b){return 0;}
E、static int show(int a,int b){return 0;}


看毕老师的视频遇到的一个选择题,答案已经知道是A、C;麻烦前辈们给解释一下D选项,{:soso_e100:}

12 个回复

正序浏览
D  这个方法最不应该的就是方法名和参数名都是一样的,可是返回值的类型是不一样的,也不是重写,不会发改电父类方法,当调用的时候,根本不知道调用的是哪一个方法,所以D肯定是错的啦
回复 使用道具 举报
技术分技术分
回复 使用道具 举报
郭学文 黑马帝 2011-10-11 11:28:19
11#
D和给定的函数是一样的。你show(1,2)的时候,是返回给你个int呢还是short呢?JVM会纠结的

你再回头看看函数的重载和覆盖就知道了

重载:函数名一样,这个没啥好说。
参数列表不一样。这里的参数列表包括参数类型和参数个数。注意参数类型是有顺序的。
重载与返回值类型无关。

其实你想想为什么要重载就能想通了。println(String)   println(int) 重载是功能一样的函数为了方便调用起了同样的名字,打印一个字符串用 println 打印int类型数据也可以直接用println,而不用打印String用个printstring(),打个int又得printint........这样烦都会被烦死的。

覆盖么注意权限基本就OK了。
回复 使用道具 举报
张磊 黑马帝 2011-10-11 10:41:45
10#
不允许存在,参数相同返回值不同的方法,D显然
回复 使用道具 举报
wsssx 2011-10-10 14:15:34
9#
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
石宗银 黑马帝 2011-10-10 10:37:47
8#
d选项,  一看呢 是一个重写,,不过 重写时的 访问权限 必须大于等于  父类的
回复 使用道具 举报
王家俊 黑马帝 2011-10-10 02:35:02
7#
D、private short show(int a,int b){return 0;}
这个方法是明显错误的,因为方法需要的返回值是short型的,而return的却是int型的0.另外就是这个方法的方法名称和参数列表与父类中的一样,但返回值类型却不一样,所以对象在调用时就不知道到底调用哪一个了。
回复 使用道具 举报
楼主:要是重写方法答案只有A
                 A可以存在是应为它重写了父类的方法!
               
           B错:是应为子类方法的访问级别不能比父类的低。
           C 可以存在是应为它是该类的一个私有方法。其的形参,和父类的形参是不一样的!
           D:不可以存在是应为:当我们调用show方法的时候,编译器也不知道我们调用的到底是哪一个方法!所以不行!
           E:当我们调用的时候,编译器也不知道我们调用的到底是哪一个方法!所以不行!
回复 使用道具 举报
子类需重写父类中的方法,并且子类和父类的方法必须相同,也就是 int show(int a,long b){return 0;}相同,而返回值类型不同
回复 使用道具 举报
wsssx 发表于 2011-10-9 21:54
选C,只有C才能重载,其他都不能写入

A也是正确的啊,A是覆盖
回复 使用道具 举报
wsssx 2011-10-9 21:54:15
藤椅
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
要的是重写,显然D选项不属于重写
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马