还是c和f选项的问题。

来源:2-12 选择练习

慕瓜7568750

2019-05-15 08:30:06

我知道 重写方法的返回值可以设置为与父类方法相同或是为父类方法返回值的子类 但是在这个问题中,C和F的返回值(int)都和父类void不同,所以为何C正确而F不正确?我的理解是,如果子类返回值得类型与父类不同也是可以的,只要子类的参数类型不同。

所以按这个逻辑,如果子类参数与父类一致(F也是int),那么这个子类的返回值的类型必须与父类一致才能编译成功。我的理解对吗?



写回答

1回答

好帮手慕小班

2019-05-15

同学你好,1、C选项中public int bar(String x){return 1;}  与题目中父类方法public void bar(String x){return 1;},在Beta类中,继承了父类Alpha的两个方法,方法重载的定义是  1)  在同一个类中    2)  方法名相同,参数列表不同(参数顺序,个数,类型)     3)  方法返回值,修饰符任意

然后这两个方法在同一个类中,参数类型不同,符合方法重载,所以编译不会报错!

2、F选项中public int bar(int x){return x;}  与父类继承的方法中符合方法名和参数列表相同,则必须符合方法覆盖,才不会报错,但是方法覆盖中返回值必须符合与父类方法相同或是为父类方法返回值的子类!所以条件不符合,编译会报错哦!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

1

0 学习 · 11489 问题

查看课程