选择题2-10

选择题2-10

B选项错是因为没有返回值是吧?但是D选项好像也是错的啊?重写的话,返回值类型不是应该范围大于等于父类类型么?void不大于float吧?还有他的参数列表是Double,不和父类相同也违反了父类的规则,就是是重构,也应该要实现父类的全部方法不是么?答案应该是BD吧?

正在回答

登陆购买课程后可参与讨论,去登陆

5回答

子类继承自父类的时候,可以直接使用父类所有的非私有方法,无需必须重写,只有当子类要有新实现规则的时候才会需要进行重写。关于你提到的返回值问题,的确是失误了,会反馈给相关人员即可进行修订。

如果解决了你的疑惑,请采纳,祝学习愉快~

  • 莨菽菽 提问者 #1
    恩,我搞混了,是一定要实现父类的所有抽象方法,记混淆了
    2017-05-09 18:35:45
李布里茨 2017-08-04 11:38:14

不是修饰符应该大于等于父类吗?返回值也有关系?求解答

  • 提问者 莨菽菽 #1
    修饰符小于等于父类
    2017-08-04 11:50:26
  • 李布里茨 回复 提问者 莨菽菽 #2
    修饰符的范围大于等于父类,但是不是无关返回值的吗?
    2017-08-04 15:17:19
  • 提问者 莨菽菽 回复 李布里茨 #3
    太久不看有点忘了。重载的话修饰符范围是大于等于父类,重写的修饰符貌似要等于父类的(这个不是很确定) 返回值的话,重载的可以不一样,重写的要一样
    2017-08-04 15:55:19
西瓜三太郎 2017-06-08 16:39:09

选择题2-10,方法重载是需要再同一个类里面吧!public void getNum(double d){}选项 和public double getNum(float d){ return 4.0f; }选项,以上两个选项都不能算是方法重载吧,因为父类中的getNum方法和以上两个选项的getNum方法不在一个类里面吧。

那既然public void getNum(double d){}选项 和public double getNum(float d){ return 4.0f; }选项既不是方法重写,又不是方法重载,编译又不报错,那这样,子类与父类方法名称相同,这种情况下何时会调用父类的方法,何时会调用子类的方法?

  • 提问者 莨菽菽 #1
    重载是需要在一个类里面,你说这个你问下助教吧,我也不知道什么情况
    2017-08-04 15:57:40
提问者 莨菽菽 2017-05-09 12:01:41

就是private float getNum(){}-----------这个出题本意是考察子类的修饰符范围要大于父类,但是因为要返回float类型,这方法少一个return,所以就算返回范围大于父类,也是一样是错的吧?

public void getNum(double d){}-----------这个是重载我能理解,但是子类不是应该要实现父类的所有方法么?所以就算重载也应该先重写了父类再重载吧?

望解答

喜欢做梦的鱼 2017-05-09 11:50:11

由于选项出现位置是随机的,所以无法单独定位到你提到的BD选项,现说明一下这个题的选择原因

题目要求说明,要选择”编译错误“的选项,而不是”不符合重写“的选项,所以:

1、父类方法在子类产生的重写的时候,访问权限需要大于等于父类权限,所以当子类方法访问修饰符是private的时候,会报错。

2、由于父类方法是无参,所以当子类方法是带参数的同名方法时,可以视为子类中重载了父类派生下来的这个方法,所以无错。

如果解决了你的疑惑,请采纳,祝学习愉快~~

  • 提问者 莨菽菽 #1
    就是private float getNum(){}-----------这个出题本意是考察子类的修饰符范围要大于父类,但是因为要返回float类型,这方法少一个return,所以就算返回范围大于父类,也是一样是错的吧? public void getNum(double d){}-----------这个是重载我能理解,但是子类不是应该要实现父类的所有方法么?所以就算重载也应该先重写了父类再重载吧? 望解答
    2017-05-09 12:02:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师