Class Super{     public float getNum(){return 3.0fj)}    public class Sub extends Super{ //这里要插入方法}在该程序的第6行中插入下面哪个方法会引起编译错误?(    )
a.public float getNum(){retum 4.0f;)
b.public void getNum(){}
c.public void getNum(double d){}
d.public double getNum(float d){retun 4.Od;}怎么选啊?谁给我解释解释啊!

解决方案 »

  1.   

    a.public float getNum(){retum 4.0f;)  //不会,这是方法的覆盖
    b.public void getNum(){}               //会,返回类型和父类的方法不一致
    c.public void getNum(double d){}       //不会,这个的参数和父类不一样,在子类中是一个新的方法
    d.public double getNum(float d){retun 4.Od;} //不会 同上,是一个新的方法覆盖 :* 覆盖的方法的标志必须要和被覆盖方法的标志完全匹配,才能达到覆盖的效果
    * 覆盖的返回值必须和被覆盖的方法的返回值一致
    * 覆盖的方法所抛出的异常必须和被覆盖方法所抛出异常一致,或是其子类
    * 被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖 
    * 参数的类型必须一致,否则只是子类的一个新方法