又一个JAVA面试题的困惑

J2EE 码拜 10年前 (2015-05-10) 1077次浏览 0个评论
 

public class Super {

  public  float  getNum(){
  return  3.0f;
  }
  
}

public class Sub  extends Super{
代码A
 
}

代码A处写下列选项哪个会编译错误
  A       public  float  getNum(){
  return  4.0f;
  }

  B  public  void  getNum(){}

  C public  void  getNum(double d){}

  D public double getNum(float d){
return  4.0d;
}

有大牛来指点下吗
B吧  A是重写,CD是重载
20分
肯定是B
原因:
A 属于重写 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型) 只不过是重写了函数体。
C和D 属于重载  重载的函数的形式参数(指参数的个数、类型或者顺序)必须不同 所以C和D重载了父类方法,重载跟函数的返回值类型无关。
B 完全错误,产生冲突,如果 用子类定义对象 调用getNum()方法时 系统就蒙了 不知道是父类还是子类了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明又一个JAVA面试题的困惑
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!