public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我在试图理解我的朋友的代码,但我不明白代码中的语法,@Override是什么意思,为什么在编码时需要使用它?谢谢。
public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我在试图理解我的朋友的代码,但我不明白代码中的语法,@Override是什么意思,为什么在编码时需要使用它?谢谢。
这是给编译器的提示,让它知道你正在覆盖父类(或Java 6中的接口)的方法。
如果编译器检测到没有要覆盖的函数,它会发出警告(或错误)。
这对于快速识别拼写错误或API更改非常有用。假设您想覆盖父类的方法harvest()
但是拼写为harvset()
,你的程序将默默调用基类,而没有@Override
,你将不会收到任何有关此问题的警告。
同样地,如果您正在使用库,并且在库的第2个版本中,harvest()
已被修改以接受整数参数,则您将不再覆盖它。再次,@Override
会迅速告诉您。
这个功能称为注释。使用注释的语法@Override
告诉编译器,“嘿,编译器,我正在改变父类中harvest的功能”,然后编译器可以立即指出,“哥们,你的命名不正确”。直到你正确命名它之前,编译器都不会编译。
因此,如果没有这个@Override
注释,编译器将不会出现错误,并且它将被视为新的方法声明。在这一点上,很难识别错误。
@Override
,伙计 :) - datafiddler@Override
表示你正在重写基类方法。在Java6中,它也意味着你正在实现一个接口的方法。当你认为正在重写一个方法但你打错了一些东西时,它可以保护你免受拼写错误的影响。