@Override是什么意思?

public class NaiveAlien extends Alien { @Override public void harvest(){} } 

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

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

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

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

同样的,如果你正在使用一个库,并且在库的版本2中,已经修改了harvest()来获取一个整型参数,那么你将不再覆盖它。 再次, @Override会很快告诉你。

这个特征被称为注解。 @Override是使用注释让编译器知道“hey compiler,我正在改变在父类中的收获”的语法,那么编译器可以立即说:“伙计,你是不正确地命名它”。 只有正确命名,编译器才会编译。

所以,如果没有这个@Override注解,编译器将不会出错,它将被视为新的方法声明。 在这一点上很难认识到这个错误。

@Override意味着你正在重写基类的方法。 在java6中,这也意味着你正在从一个接口实现一个方法。 它可以保护你免受错别字,当你认为是压倒一切的方法,但错误的东西。

方法重写是在已经存在于父类中的子类中声明一个方法。

下面是一个简单的例子: Boy class扩展了Human class 。 这两个类都有一个通用的方法void eat()Boy classeat()方法自己的实现,或者换句话说就是重写eat()方法。

 class Human{ public void eat() { System.out.println("Human is eating"); } } class Boy extends Human{ @override public void eat(){ System.out.println("Boy is eating"); } public static void main( String args[]) { Boy obj = new Boy(); obj.eat(); } } 

当编译器在您的代码中看到@override ,它会自动调用基类,这对于检测拼写错误是非常有用的,以防错过拼写方法。