猿问

Java 每日一题:2016-06-17

每天在这里贴一道 Java 题,借用java贴吧题目,来提高各位学习的兴趣和质量,希望多多支持!

Child 是 Base 的子类,它重写了 Base 中的 method1 和 method2 两个方法方法。请问 Child 中的这两个方法正确吗?

慕莱坞9220042
浏览 1470回答 3
3回答

lvanli

编译不出错,使用也没错,但是有一点会出问题。Child类new出来的对象会和调用者保持一致所以如果是一个Base对象调用Child的method1返回值就不能赋值给Child。method2没看出问题,传入父类时会执行父类的方法,传入子类时会执行子类的方法。

慕莱坞9220042

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

玄鉴

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

相关分类

Java
我要回答