@Override是什么意思?

Woo*_*ung 71 java overriding annotations

public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}
Run Code Online (Sandbox Code Playgroud)

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

Ebo*_*ike 126

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

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

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

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

  • 请注意,@ Override仅适用于公共和受保护的功能. (17认同)

小智 27

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

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

  • 我希望编译器警告和错误称我为"老兄". (30认同)

fas*_*ava 9

@Override意味着您要覆盖基类方法.在java6中,它还意味着您正在从接口实现方法.当你认为覆盖某种方法但输入错误时,它会保护你免受错别字的侵害.