当前页面: 开发资料首页 → J2SE 专题 → 帮忙看下
帮忙看下
摘要: 帮忙看下
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类中的哪个方法单独存在时定义是合法的啊?? 帮忙分析下
除了
public float getNum()
{
return 4.0f;
}
这个方法外,都是合法的。
因为在Super中有个静态的同样定义的方法(所谓同样定义是指名字、参数的个数和类型、返回类型
都相同),而父类中的静态方法是不允许被重写的。
再麻烦下 如果把Super 前面的static 去掉 为什么就是第一个方法是不合法的定义了呢
为什么编译器一定要把第一个方法看成是准备重写的方法,编译提示:getNum() in Sub cannot override getNum() in Super; attempting to use incompatible return type
第2个和第4个却不看成是要重写父类的方法呢?
分先给你了哈~~~
你自己在子类方法前加了一串类似空格的东西
把前面的类似空格的东西删了就好了