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

Java 每日一题:2016-06-17

Java 每日一题:2016-06-17

慕莱坞9220042 2016-06-17 11:55:43
每天在这里贴一道 Java 题,借用java贴吧题目,来提高各位学习的兴趣和质量,希望多多支持!Child 是 Base 的子类,它重写了 Base 中的 method1 和 method2 两个方法方法。请问 Child 中的这两个方法正确吗?
查看完整描述

3 回答

已采纳
?
lvanli

TA贡献7条经验 获得超8个赞

编译不出错,使用也没错,但是有一点会出问题。

Child类new出来的对象会和调用者保持一致

所以如果是一个Base对象调用Child的method1返回值就不能赋值给Child。

method2没看出问题,传入父类时会执行父类的方法,传入子类时会执行子类的方法。

查看完整回答
2 反对 回复 2016-06-17
  • SoyaDokio
    SoyaDokio
    编译器会在27行报错,因为Child类中method2方法的参数列表与父类同名方法参数列表不同,故无法覆写,那就是一个Child类自己的方法。但是26行声明,该行下面应为重写方法,实则不然。故报错。
?
慕莱坞9220042

TA贡献377条经验 获得超508个赞

推荐答案,仅供参考:

Child 中的两个方法都有 @Override 注释,所以本意是想重写父类的方法。method2 方法的参数类型不对,不能重写父类的方法,所以报错。如果 method2 没有使用 @Override注释,编译是可以通过的,但此时子类中的 method2 和 父类中的 method2 是重载(overload)的关系。

查看完整回答
2 反对 回复 2016-06-18
  • 一条小咸鱼
    一条小咸鱼
    参数类型不同也能够成重载?
  • 玄鉴
    玄鉴
    当然,重载的重要不同就是参数列表不同,甚至顺序不同也可以算是重载。
  • SoyaDokio
    SoyaDokio
    重载关系我倒是没想到,多谢提醒。
?
玄鉴

TA贡献16条经验 获得超4个赞

采纳答案不对,肯定会报错。重写的第一个方法,返回值类型不同,第二个参数列表不同,这个不是方法的重写。第一个算是对象的自动类型向上转型勉强不会报错,但第二个肯定报错。除非把重写符号去掉,当做子类特有的方法存在。或者在父类重写一个相同参数列表的方法。与其他的两个方法共同构成方法重载。

查看完整回答
1 反对 回复 2016-06-20
  • 3 回答
  • 2 关注
  • 1469 浏览

添加回答

举报

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