android @override的含义

我是完全@Override android,并想知道Android中的@Override语句的目的。

@Override是一个Java注释 。 它告诉编译器,下面的方法覆盖了它的超类的一个方法。 比如说你实现一个Person类。

 public class Person { public final String firstName; public final String lastName; //some methods @Override public boolean equals(Object other) { ... } } 

person类有一个equals()方法。 在Person的超类Object中已经定义了equals方法。 因此,上面的equals()的实现是对Person的equals()的重新定义。 也就是说,Person覆盖equals()。

重写方法而不明确注释它是合法的。 那么@Override注释是什么意思? 如果你不小心试图以这种方式覆盖equals():

 public boolean equals(Person other) { ... } 

上面的情况有一个错误。 你打算重写equals(),但你没有。 为什么? 因为真实的equals()获得一个Object作为参数,而你的equals()获得一个Person作为参数。 编译器不会告诉你这个错误,因为编译器不知道你想重载。 至于编译器可以告诉,你实际上是要重载 equals()。 但是,如果您尝试使用@Override注释覆盖等于:

 @Override public boolean equals(Person other) { ... } 

现在编译器知道你有错误。 你想重写,但你没有。 所以使用@Override注解的原因是显式声明方法重写。

它是一个Java注释(不是特定于Android的)。 你用它来表示这个方法重写一个方法。

使用它的原因是当你创build一个你想重写方法的方法时发现错误,但是通过一些错误,它不会,例如方法名中的错字,方法签名中的错误等等。例如,有时候开发者要这样:

 class Foo { public boolean equals(Foo other) { ... 

作者打算重写超类的equals方法,但它不(参数types应该是Object )。 该程序将编译好,但不会像作者所期望的那样使用Foo.equals

 class Foo { @Override public boolean equals(Foo other) { ... 

编译现在会给出一个错误,因为该方法不会覆盖另一个方法。 这提前指出了问题,并希望能够节省一些debugging时间来追踪问题。

这是一个Java注释,它告诉编译器该方法意图覆盖超类中的方法。 这不是绝对必要的,但在编译时确实有助于发现错误。

@Override是一个java annotation

表示方法声明旨在覆盖超类中的方法声明。 如果一个方法用这个注解types进行注释,但是不覆盖超类方法,编译器需要生成一个错误消息。

另见

  • 当-DO-您使用-Java类修调注解和为什么

例:

 class Parent{ public void foo(){ } } class Child extends Parent{ //compile perfect ! @Override public void foo(){ } //will show compile time error message here as it is not being overridden @Override public void foo(int i){ } } 

这是Java中的注释 。 它标志着该方法是为了覆盖超类中的方法。

看到这个以前的StackOverflow问题:

Android @Override使用情况

这是一个特殊的编译器保留的Java注释,表示您正在重写超类方法。

它的Java Anotation你的代码不需要@override正常工作。 @override这是编译器用来帮助你的东西。 您正在告诉编译器,您正在重写inheritance的类中的方法/函数。 为什么这样做是有用的? 那么一旦编译器知道你打算重写它可以帮助你识别代码中的错误。

 public class Person { 

公共最终stringfirstName; public final String lastName;

//一些方法

@Override public String getName(){…}}

 public class Employee extends Person { public String get name() { ...... } 

在这里,编译器会显示任何错误,并会很高兴,因为它知道你正在尝试覆盖该方法..

 public class Employee extends Person { @Override public String getname() { ..... } 

在这里,会捕捉你的错误,并给出一个编译时错误…