本问题已经有最佳答案,请猛点这里访问。
我是Android Studio的新手,我想知道Android Studio中@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) {
...
}
上面的案例有一个错误。你的意思是重写equals(),但你没有。为什么?因为真正的equals()获取一个Object作为参数,你的equals()获取一个Person作为参数。编译器不会告诉您有关该错误的信息,因为编译器不知道您想要覆盖。就编译器而言,你实际上意味着重载equals()。但是如果你试图使用@Override注释覆盖equals:
@Override public boolean equals(Person other) {
...
}
现在编译器知道你有错误。你想覆盖,但你没有。因此,使用@Override注释的原因是显式声明方法覆盖。
那么它将是一个全新的方法名称等于? 取决于我如何定义ir?
它是一个Java注释(不是特定于Android的)。您可以使用它来表示此方法覆盖方法。
使用它的原因是在创建要覆盖方法的方法时捕获错误,但是由于某些错误,它没有,例如,方法名称中的拼写错误,方法签名中的错误等等。例如,有时开发人员会这样:
class Foo {
public boolean equals(Foo other) {
...
作者希望这可以覆盖超类'equals方法,但它不会(参数类型应该是Object)。程序编译正常,但不会像作者那样使用Foo.equals。
class Foo {
@Override
public boolean equals(Foo other) {
...
编译现在会出错,因为该方法不会覆盖另一个方法。这提前指出了问题,并希望节省一些调试时间来追踪问题。
它是一个Java注释,告诉编译器该方法旨在覆盖超类中的方法。它不是绝对必要的,但确实有助于在编译时捕获错误。
@Override是java annotation。
Indicates that a method declaration is intended to override a method declaration in a superclass. If a method is annotated with this annotation type but does not override a superclass method, compilers are required to generate an error message.
另见
当-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中的注释。它标志着该方法旨在覆盖超类中的方法。
这是一个特殊的,编译器保留的Java注释,表示您正在覆盖超类方法。