【发布时间】:2010-12-03 00:31:57
【问题描述】:
public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我试图理解我朋友的代码,但我没有理解代码中的 @Override 语法。那有什么作用,为什么我们需要编码? 谢谢。
【问题讨论】:
标签: java annotations overriding
public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
我试图理解我朋友的代码,但我没有理解代码中的 @Override 语法。那有什么作用,为什么我们需要编码? 谢谢。
【问题讨论】:
标签: java annotations overriding
这是一个提示,让编译器知道您正在覆盖父类(或 Java 6 中的接口)的方法。
如果编译器检测到没有要覆盖的函数,它会警告你(或错误)。
这对于快速识别拼写错误或 API 更改非常有用。假设您试图覆盖父类的方法harvest(),但拼写为harvset(),您的程序将静默调用基类,如果没有@Override,您将不会收到任何警告。
同样,如果您正在使用库,并且在库的版本 2 中,harvest() 已被修改为采用整数参数,您将不再覆盖它。同样,@Override 会很快告诉你。
【讨论】:
此功能称为注释。 @Override 是使用注解让编译器知道的语法,“嘿,编译器,我正在更改收获在父类中所做的事情”,然后编译器可以立即说,“伙计,你命名不正确”。在你正确命名之前编译器不会编译。
所以,没有这个@Override注解,编译器不会出错,它会被认为是一个新的方法声明。此时很难识别错误。
【讨论】:
@Override,伙计:)
@Override 表示您正在覆盖基类方法。在 java6 中,这也意味着您正在从接口实现方法。当您认为要覆盖方法但输入错误时,它可以保护您免受拼写错误。
【讨论】: