1)  class Super{ 
 2)  public float getNum(){return 3.0f;} 
 3)  } 
 4) 
 5)  public class Sub extends Super{ 
 6) 
 7)  } 
which method, placed at line 6, will cause a compiler error? 
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;} 
Answer:B 为什么选B阿

解决方案 »

  1.   

    你得弄清楚overridding和overloading
    重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。A是overriding
    CD是overloading
      

  2.   

    忘记说了 Overloading不应该改变返回值的