Java @重写不适用于某个方法,但适用于其他方法

Java @重写不适用于某个方法,但适用于其他方法,java,android,overriding,Java,Android,Overriding,我不知道为什么我不能覆盖一种方法,但我可以覆盖其他方法 下面是我希望在另一个类中重写的方法,而不使用该方法扩展该类: public static void onOk() throws Exception { throw new Exception("test"); } 我试图重写,但它说这里不允许注释,但在方法下面有很多其他方法,它们刚刚被重写 @Override <- red underlined error "Annotation not allowed here" Inp

我不知道为什么我不能覆盖一种方法,但我可以覆盖其他方法

下面是我希望在另一个类中重写的方法,而不使用该方法扩展该类:

public static void onOk() throws Exception {
    throw new Exception("test");
}
我试图重写,但它说这里不允许注释,但在方法下面有很多其他方法,它们刚刚被重写

@Override  <- red underlined error "Annotation not allowed here"
InputAdressDialogFragment.onOk(){
}

@Override  <- works! The compiler accepts
    public View onCreateView(
子级扩展父级的类子级只能重写其超类父级中定义的非静态方法


在静态上下文中,没有对当前对象的隐式引用,这是因为静态方法不需要像普通的非静态方法那样调用任何对象。静态方法不是基于对象的,而是基于类的

根据定义,@Override用于重写方法

无法重写静态方法-有关详细信息,请参阅


这就是为什么在良好的OOP中使用static被视为异常的原因之一。

在第一个示例中,您正在调用一个方法。在第二个示例中,您声明了一个方法。请注意,无论如何都不能重写静态方法,必须扩展类以重写其中的方法。老实说,你真的不清楚你想做什么……你能看不到@Override public View onCreateView结构的不同吗。。。和@Override InputAddressDialogFragment.onOk{?您不能重写静态方法。若要重写某些方法,它必须在其父类中可用,并且也不是静态的。在这里,您是通过其类引用直接调用方法名。因此,不能仅为了记录而重写onOk方法:编译器错误与引发异常完全不同。我重新编写了您的que关于那件事,我很抱歉。