class Super
{
public static float getNum()
{
return 3.0f; 
}
}class Sub extends Super
{
     public void getNum(int i)
{

}

     public void getNum(double d){
}

     public float getNum()
{
return 4.0f;
}

     public double getNum(float d)
{
return 4.0d;
}
}Sub类中的哪个方法单独存在时定义是合法的啊??  帮忙分析下

解决方案 »

  1.   

    除了
    public float getNum()
    {
    return 4.0f;
    }
    这个方法外,都是合法的。因为在Super中有个静态的同样定义的方法(所谓同样定义是指名字、参数的个数和类型、返回类型
    都相同),而父类中的静态方法是不允许被重写的。
      

  2.   

    再麻烦下  如果把Super 前面的static 去掉  为什么就是第一个方法是不合法的定义了呢
    为什么编译器一定要把第一个方法看成是准备重写的方法,编译提示:getNum() in Sub cannot override getNum() in Super; attempting to use incompatible return type
    第2个和第4个却不看成是要重写父类的方法呢?
    分先给你了哈~~~
      

  3.   

    再麻烦下  如果把Super 前面的static 去掉  为什么就是第一个方法是不合法的定义了呢
    为什么编译器一定要把第一个方法看成是准备重写的方法,编译提示:getNum() in Sub cannot override getNum() in Super; attempting to use incompatible return type
    第2个和第4个却不看成是要重写父类的方法呢?
    分先给你了哈~~~
    没有你说的问题。