一道java选择题,新手求指教

将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?A.publicfloatgetNum(){return4.0f;}B.publicvoidge... 将下列哪个代码(A,B,C,D)放入程序中标注的【代码】处将导致编译错误?
A. public float getNum() {return 4.0f;}
B .public void getNum(){ }
C. public void getNum(double d){ }
D .public double getNum(float d) {return 4.0d; }

class A{
public float getNum(){
return 3.0f; }
}
public class Bextends A{
[代码]
}
答案是选B 为什么C对呢
展开
 我来答
bbcba_123
推荐于2017-09-20 · TA获得超过105个赞
知道答主
回答量:68
采纳率:100%
帮助的人:28.4万
展开全部
A是方法的重写,肯定没有问题。重写就是方法名、方法的参数和返回类型都必须相同。
C和D都是方法的重载,所以也没有问题。重载就是方法名相同,但参数不同。
B方法名相同,参数相同,返回类型不同,这样的方法是模棱两可的,当子类调用的时候,根本区分不出来该调用父类的方法还是自己本身的方法,所以这种方法编译直接pass掉。
麦迪KYO
2014-12-16 · TA获得超过169个赞
知道答主
回答量:66
采纳率:0%
帮助的人:25.2万
展开全部
C带了参数,默认不是一个方法了,对于继承,要么重写相同方法(返回值类型必须一致),要么重载方法。AB是重写,CD是重载,但是B返回值类型不一致,所以B错
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LycrusHamster
2014-12-16 · TA获得超过888个赞
知道小有建树答主
回答量:487
采纳率:100%
帮助的人:107万
展开全部
lyx4228716是对的
如果方法的签名不同,那就是方法重载。方法的签名一致就是形参的个数,类型,顺序必须一致。
如果方法的签名相同,那就是重写/覆盖原有的方法,要求返回类型一致或者是原有类型的子类

A是重写覆盖
B是错误的,因为返回类型不兼容
C D都是重载
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b0bba24
2014-12-16 · TA获得超过887个赞
知道小有建树答主
回答量:446
采纳率:0%
帮助的人:457万
展开全部
那你觉得c为什么不对呢?c的函数返回类型为void,则代表函数体不需要返回任何东西,那函数体就允许为空了
追问
那么B错哪了  为什么加个参数double d 就对了
追答
B的写法没有错,但放到b类里,而b类继承了a类,a类中已经有一个和B答案同名且无参的函数了,这样就冲突了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
何其者也
2014-12-16 · TA获得超过347个赞
知道小有建树答主
回答量:310
采纳率:50%
帮助的人:102万
展开全部
B继承A实现的是他的方法,是要有返回值的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式