每天在这里贴一道 Java 题,借用java贴吧题目,来提高各位学习的兴趣和质量,希望多多支持!Child 是 Base 的子类,它重写了 Base 中的 method1 和 method2 两个方法方法。请问 Child 中的这两个方法正确吗?
3 回答
已采纳
lvanli
TA贡献7条经验 获得超8个赞
编译不出错,使用也没错,但是有一点会出问题。
Child类new出来的对象会和调用者保持一致
所以如果是一个Base对象调用Child的method1返回值就不能赋值给Child。
method2没看出问题,传入父类时会执行父类的方法,传入子类时会执行子类的方法。
慕莱坞9220042
TA贡献377条经验 获得超508个赞
推荐答案,仅供参考:
Child 中的两个方法都有 @Override 注释,所以本意是想重写父类的方法。method2 方法的参数类型不对,不能重写父类的方法,所以报错。如果 method2 没有使用 @Override注释,编译是可以通过的,但此时子类中的 method2 和 父类中的 method2 是重载(overload)的关系。
玄鉴
TA贡献16条经验 获得超4个赞
采纳答案不对,肯定会报错。重写的第一个方法,返回值类型不同,第二个参数列表不同,这个不是方法的重写。第一个算是对象的自动类型向上转型勉强不会报错,但第二个肯定报错。除非把重写符号去掉,当做子类特有的方法存在。或者在父类重写一个相同参数列表的方法。与其他的两个方法共同构成方法重载。
添加回答
举报
0/150
提交
取消