陕西联通套餐资费详情:一道java 题

来源:百度文库 编辑:高校问答 时间:2024/05/08 13:14:19
1. class Super {
2. public float getNum() { return 3.0f; }
3. }
4.
5. public class Sub extends Super {
6.
7. }
Which method, placed at line6, causes compilation to fail?

A. public void getNum() { }
B. public void getNum(double d) { }
C. public float getNum() { return 4.0f; }
D. public double getNum(float d) { return 4.0d; }
请说详细一点,我刚刚开始学java 谢谢

你这个题第一个符合,不能编译
说明:
A:方法名和基类(也就是父类)完全相同,都没有参数,于是编译器会认为是覆盖,而覆盖必需反回值相同,但方法体可以不同,而A是无反回值,所以不行
B.参数不一样,他不是覆盖而是重载,你可以理解成新加的方法,和基类中的没有关系
C.是覆盖,A 中已说明了,覆盖可以改变其方法体
D.同B,注意这反回值一定要和方法的类相同,如:如果改成return 4.0f那就会出错

当然真正的搞会还要时间的,可以加我QQ460566995问我

子类的继承方法的 return 类型应该和父类的相同
只有public float getNum() { return 4.0f; }
是对的,其他的编译有错。
建议回去好好看看override