当前位置: 代码迷 >> J2EE >> 又一个JAVA面试题的迷惑
  详细解决方案

又一个JAVA面试题的迷惑

热度:13   发布时间:2016-04-17 23:14:32.0
又一个JAVA面试题的困惑
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 属于重写 重写函数必须有相同的类型,名称和参数列表 (即相同的函数原型) 只不过是重写了函数体。
C和D 属于重载  重载的函数的形式参数(指参数的个数、类型或者顺序)必须不同 所以C和D重载了父类方法,重载跟函数的返回值类型无关。
B 完全错误,产生冲突,如果 用子类定义对象 调用getNum()方法时 系统就蒙了 不知道是父类还是子类了