@Override是什么意思?

时间:2010-12-03 00:31:57

标签: java annotations override

public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}

我试图了解我朋友的代码,但我没有在代码中获得语法@Override。这是做什么的,为什么我们需要编码? 感谢。

3 个答案:

答案 0 :(得分:126)

这是编译器的一个提示,让它知道你正在覆盖父类(或Java 6中的接口)的方法。

如果编译器检测到没有要覆盖的函数,它将发出警告(或错误)。

这对于快速识别拼写错误或API更改非常有用。假设你试图覆盖你的父类'方法harvest()但拼写它harvset(),你的程序将默默地调用基类,而没有@Override,你就不会有任何警告关于那个。

同样,如果您正在使用库,并且在库的版本2中,harvest()已被修改为采用整数参数,则您将不再覆盖它。同样,@Override会很快告诉你。

答案 1 :(得分:27)

此功能称为注释。 @Override是使用注释让编译器知道的语法,“嘿编译器,我正在改变父类中的收获”,然后编译器可以立即说,“伙计,你是错误地命名它”。在您正确命名之前,编译器不会编译。

因此,如果没有此@Override注释,编译器将不会出错,它将被视为新的方法声明。此时很难识别错误。

答案 2 :(得分:9)

@Override表示您正在覆盖基类方法。在java6中,它还意味着您正在从接口实现方法。当你认为覆盖某种方法但输入错误时,它会保护你免受错别字的攻击。<​​/ p>