为了账号安全,请及时绑定邮箱和手机立即绑定

关于java重写的问题

关于java重写的问题

洋妞honey 2015-10-29 08:46:49
将下列哪个代码放入程序中标注的【代码】处将导致编译错误。答案是B(PS:谁能告诉我这是怎么回事)A.public float getNum(){return 4.0f;}B.public void getNum(){}C.public void getNum(double d){}D.public float getNum(float d){return 4.0d;}class A{ public float getNum(){ return 3.0f;}} public class B extends A{         【代码】}
查看完整描述

3 回答

已采纳
?
天启之魂

TA贡献174条经验 获得超85个赞

答案是b

A没问题,是函数的重写

C没问题,是一个B类的特有函数,也可以算是getNum()方法的重载

D,没问题,同C

B编译错误,因为看参数列表和父类的getNum方法形成了重写,但是返回值类型不同,造成了调用的不确定性(就是虚拟机需要调用getNum时,只看参数列表,所以,无法判断该调用哪一个),所以编译失败


查看完整回答
反对 回复 2015-10-29
?
前进的骚年

TA贡献3条经验 获得超1个赞

答案是B,D。

B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private);

重载:必须具有不同的参数列表;
  可以有不同的返回类型,只要参数列表不同就可以了;
  可以有不同的访问修饰符;

把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对.

D定义返回类型为float,但实际返回的是double类型

查看完整回答
反对 回复 2015-10-29
?
叫我官人0

TA贡献3条经验 获得超1个赞

答案应该是d吧,返回类型不一致,需要强转;这种最好自己敲一下

查看完整回答
反对 回复 2015-10-29
  • 3 回答
  • 0 关注
  • 1827 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信