public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我试图理解我朋友的代码,但是代码中没有语法@Override。这有什么作用,为什么我们需要编码?谢谢。
Answers:
提示编译器让它知道您正在重写父类的方法(或Java 6中的接口)。
如果编译器检测到没有要覆盖的函数,它将警告您(或错误)。
这对于快速识别输入错误或API更改非常有用。假设您尝试覆盖父类的方法harvest()
但将其拼写harvset()
,则程序将以静默方式调用基类,而如果没有@Override
,则不会对此发出任何警告。
同样,如果您使用的是库,并且在库的版本2中harvest()
已被修改为采用整数参数,则不再覆盖它。再次,@Override
会很快告诉你。
此功能称为注释。@Override
是使用注释让编译器知道的语法:“嘿,编译器,我正在更改父类中的收获”,然后编译器可以立即说:“伙计,您的命名错误”。正确命名后,编译器才会编译。
因此,没有此@Override
注释,编译器将不会出错,它将被视为新的方法声明。此时将很难识别该错误。
@Override
,伙计:)