黑马程序员技术交流社区

标题: 选择题 [打印本页]

作者: 张英杰    时间: 2011-10-9 21:41
标题: 选择题
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:}
作者: 欧阳超    时间: 2011-10-9 21:50
要的是重写,显然D选项不属于重写
作者: wsssx    时间: 2011-10-9 21:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: 张英杰    时间: 2011-10-9 22:27
wsssx 发表于 2011-10-9 21:54
选C,只有C才能重载,其他都不能写入

A也是正确的啊,A是覆盖
作者: 康健    时间: 2011-10-9 22:37
子类需重写父类中的方法,并且子类和父类的方法必须相同,也就是 int show(int a,long b){return 0;}相同,而返回值类型不同
作者: 苏志伟    时间: 2011-10-9 22:56
楼主:要是重写方法答案只有A
                 A可以存在是应为它重写了父类的方法!
               
           B错:是应为子类方法的访问级别不能比父类的低。
           C 可以存在是应为它是该类的一个私有方法。其的形参,和父类的形参是不一样的!
           D:不可以存在是应为:当我们调用show方法的时候,编译器也不知道我们调用的到底是哪一个方法!所以不行!
           E:当我们调用的时候,编译器也不知道我们调用的到底是哪一个方法!所以不行!
作者: 王家俊    时间: 2011-10-10 02:35
D、private short show(int a,int b){return 0;}
这个方法是明显错误的,因为方法需要的返回值是short型的,而return的却是int型的0.另外就是这个方法的方法名称和参数列表与父类中的一样,但返回值类型却不一样,所以对象在调用时就不知道到底调用哪一个了。
作者: 石宗银    时间: 2011-10-10 10:37
d选项,  一看呢 是一个重写,,不过 重写时的 访问权限 必须大于等于  父类的
作者: wsssx    时间: 2011-10-10 14:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: 张磊    时间: 2011-10-11 10:41
不允许存在,参数相同返回值不同的方法,D显然
作者: 郭学文    时间: 2011-10-11 11:28
D和给定的函数是一样的。你show(1,2)的时候,是返回给你个int呢还是short呢?JVM会纠结的

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

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

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

覆盖么注意权限基本就OK了。
作者: guobin_lu    时间: 2013-3-30 18:43
技术分技术分
作者: 白磊    时间: 2013-5-5 18:23
D  这个方法最不应该的就是方法名和参数名都是一样的,可是返回值的类型是不一样的,也不是重写,不会发改电父类方法,当调用的时候,根本不知道调用的是哪一个方法,所以D肯定是错的啦




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