将下列哪个代码放入程序中标注的【代码】处将导致编译错误。答案是B(PS:谁能告诉我这是怎么回事)A.public float getNum(){return 4.0f;}B.public void getNum(){}C.public void getNum(double d){}D.public float getNum(float d){return 4.0d;}class A{
public float getNum(){
return 3.0f;}}
public class B extends A{
【代码】}
3 回答
已采纳
天启之魂
TA贡献174条经验 获得超85个赞
答案是b
A没问题,是函数的重写
C没问题,是一个B类的特有函数,也可以算是getNum()方法的重载
D,没问题,同C
B编译错误,因为看参数列表和父类的getNum方法形成了重写,但是返回值类型不同,造成了调用的不确定性(就是虚拟机需要调用getNum时,只看参数列表,所以,无法判断该调用哪一个),所以编译失败
前进的骚年
TA贡献3条经验 获得超1个赞
答案是B,D。
B既不是重写也不是重载,重写需要一样的返回值类型和参数列表,访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private);
重载:必须具有不同的参数列表;
可以有不同的返回类型,只要参数列表不同就可以了;
可以有不同的访问修饰符;
把其看做是重载,那么在java中是不能以返回值来区分重载方法的,所以b不对.
D定义返回类型为float,但实际返回的是double类型
添加回答
举报
0/150
提交
取消