public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我试图了解我朋友的代码,但我没有在代码中获得语法@Override。这是做什么的,为什么我们需要编码? 感谢。
答案 0 :(得分:126)
这是编译器的一个提示,让它知道你正在覆盖父类(或Java 6中的接口)的方法。
如果编译器检测到没有要覆盖的函数,它将发出警告(或错误)。
这对于快速识别拼写错误或API更改非常有用。假设你试图覆盖你的父类'方法harvest()
但拼写它harvset()
,你的程序将默默地调用基类,而没有@Override
,你就不会有任何警告关于那个。
同样,如果您正在使用库,并且在库的版本2中,harvest()
已被修改为采用整数参数,则您将不再覆盖它。同样,@Override
会很快告诉你。
答案 1 :(得分:27)
此功能称为注释。 @Override
是使用注释让编译器知道的语法,“嘿编译器,我正在改变父类中的收获”,然后编译器可以立即说,“伙计,你是错误地命名它”。在您正确命名之前,编译器不会编译。
因此,如果没有此@Override
注释,编译器将不会出错,它将被视为新的方法声明。此时很难识别错误。
答案 2 :(得分:9)
@Override
表示您正在覆盖基类方法。在java6中,它还意味着您正在从接口实现方法。当你认为覆盖某种方法但输入错误时,它会保护你免受错别字的攻击。</ p>