@Override不适用于某种方法,但适用于其他方法

时间:2017-07-04 07:44:13

标签: java android override

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

这是我想在另一个类中重写的方法(不使用方法扩展类):

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(

2 个答案:

答案 0 :(得分:2)

根据定义,@ Override用于覆盖方法。

无法覆盖静态方法 - 有关详细信息,请参阅here

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

答案 1 :(得分:0)

一个班级Child,其中Child extends Parent只能overridesuper中定义的Parent个非静态方法。

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