【问题标题】:What does @Override mean?@Override 是什么意思?
【发布时间】:2010-12-03 00:31:57
【问题描述】:
public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}

我试图理解我朋友的代码,但我没有理解代码中的 @Override 语法。那有什么作用,为什么我们需要编码? 谢谢。

【问题讨论】:

    标签: java annotations overriding


    【解决方案1】:

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

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

    这对于快速识别拼写错误或 API 更改非常有用。假设您试图覆盖父类的方法harvest(),但拼写为harvset(),您的程序将静默调用基类,如果没有@Override,您将不会收到任何警告。

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

    【讨论】:

    • 请注意,@Override 仅适用于公共和受保护的函数。
    • 还应该提到多个注解也是可能的,也可以使用它添加其他代码。例如,在检查 Android M 应用程序中的权限时,就像在 PermissionsDispatcher 中所做的那样。
    【解决方案2】:

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

    所以,没有这个@Override注解,编译器不会出错,它会被认为是一个新的方法声明。此时很难识别错误。

    【讨论】:

    • 大写很重要,我们说的是@Override,伙计:)
    【解决方案3】:

    @Override 表示您正在覆盖基类方法。在 java6 中,这也意味着您正在从接口实现方法。当您认为要覆盖方法但输入错误时,它可以保护您免受拼写错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      相关资源
      最近更新 更多