我完全不了解Android Studio,想知道在Android Studio中
@Override
语句的作用是什么。@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()方法。equals()方法已经在Person的超类Object中定义。因此,上述equals()方法的实现是对Persons的equals()方法的重新定义。也就是说,Person覆盖了equals()。
可以在不显式注释的情况下重写方法是合法的。那么@Override注释有什么好处呢?如果您尝试以这种方式意外地重写equals()会怎样:
public boolean equals(Person other) {
...
}
@Override public boolean equals(Person other) {
...
}
这是一个Java注解(不是仅限于Android)。你使用它来表示这个方法要重写另一个方法。
使用它的原因是为了在你创建一个意图重写某个方法的方法时捕获错误,而通过某些错误,它实际上并没有重写成功,例如方法名称中的错别字、方法签名中的错误等。例如,有时开发人员做这样的事情:
class Foo {
public boolean equals(Foo other) {
...
作者意图覆盖超类的equals
方法,但实际上没有覆盖(参数类型应为Object
)。程序将会编译通过,但并不会像作者所期望的那样使用Foo.equals
。
class Foo {
@Override
public boolean equals(Foo other) {
...
现在编译会报错,因为该方法没有覆盖其他方法。这能够及早指出问题,希望可以节省一些调试时间来追踪问题。
这是一个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 注解,表示你正在覆盖一个超类方法。