我正在学习Java来构建一个Android应用程序。我看到在很多地方,一个班级被继承,过度训练的方法被标记为" @Override
"。
例如:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
有人可以解释一下,编译器如何解释这个令牌" @Override
"。这是保留字还是评论。或者只是" @
"这有什么特别的,比如我们有" //
"评论。
答案 0 :(得分:1)
如果注释的方法是来自超类型(父类或接口)的不是,注释@Override
将导致错误
JLS-9.6.3.4 @Override说(部分),
如果使用注释@Override注释方法声明,但该方法不覆盖或实现在超类型中声明的方法,或者不是覆盖等效于Object的公共方法,则会发生编译时错误。
答案 1 :(得分:1)
@Override
是一个注释。
使用此方法,以便您可以利用编译器检查来确保实际从父类重写方法。这样,即使你犯了错误的方法名称拼写错误或者没有正确匹配参数,编译器也会警告你。
答案 2 :(得分:1)
当overriding a method
时,您可能希望使用@Override
注释来指示编译器您要覆盖superclass
中的方法。如果由于某种原因,编译器检测到该方法在superclasses
之一中不存在,那么它将生成错误。
请参阅this以便更好地理解。
答案 3 :(得分:0)
From Oracle docs
@Override: @Override注释通知编译器该元素是要覆盖超类中声明的元素。重写方法将在Interfaces and Inheritance中讨论。
// mark method as a superclass method
// that has been overridden
@Override
int overriddenMethod() { }
虽然在覆盖方法时不需要使用此注释,但有助于防止错误。如果标有
@Override
的方法无法正确使用覆盖其中一个超类中的方法,编译器会生成错误。
答案 4 :(得分:0)
符号字符(@)
向编译器指示后面的内容是注释。在以下示例中,注释的名称为覆盖:
@Override
void mySuperMethod() { ... }
在您的示例中@Override
指示onCreate(Bundle savedInstanceState)
方法会覆盖或实现在超类型中声明的方法,如果超级类中不存在onCreate(Bundle savedInstanceState)
则会导致错误。
@Override
public void onCreate(Bundle savedInstanceState) {}