zel*_*ell 2 java extends overriding
我的问题来自一个项目.因此,让我抽象出一些不相关的细节.
我有一个JAVA公共类A,它有两个受保护的静态方法,foo()和bar().方法foo()在其体内调用bar().
public class A{
protected static foo(){
...
bar()
...
}
protected static bar(){print("A.bar()");}
}
Run Code Online (Sandbox Code Playgroud)
现在我还有一个B级扩展A.在B中,我重写bar()
class B extends A{
@Overrides
static protected bar(){ print("A.bar() extended");
}
Run Code Online (Sandbox Code Playgroud)
最后,我从B中的一个类调用foo()
class B extends A{
...
public static main(){foo()}
}
Run Code Online (Sandbox Code Playgroud)
我无法理解两点1.编译器(Eclipse)要求我删除@Override注释.为什么?2.最后main()输出"A.bar()",这意味着已解析的bar()目标是A类,但我打算覆盖bar()并使用A的foo()来调用修改后的bar( ).我怎样才能做到这一点?
你有什么看法?
您不能覆盖静态方法,只能覆盖非静态实例方法.您试图在静态环境中使用继承,但这不起作用.如果你真的需要继承(通常当你认为你做的时候,你真的没有),那么使这些方法非静态.