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() { ..... }
在这里,会捕捉你的错误,并给出一个编译时错误…