Java Android Studio中@override的含义

Java Android Studio中@override的含义,java,android,annotations,overriding,Java,Android,Annotations,Overriding,我对Android Studio完全陌生,我想知道Android Studio中的@Override语句的用途。这是一个Java语言。它标志着该方法将覆盖超类中的方法。是java 指示方法声明旨在重写超类中的方法声明。如果使用此注释类型对方法进行注释,但未重写超类方法,则需要编译器生成错误消息 另请参见 例如: class Parent{ public void foo(){ } } class Child extends Parent{ //compile p

我对Android Studio完全陌生,我想知道Android Studio中的
@Override
语句的用途。

这是一个Java语言。它标志着该方法将覆盖超类中的方法。

是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注释,告诉编译器该方法打算重写来自超类的方法。严格来说,这不是必需的,但有助于在编译时捕获错误。

这是一个Java注释(不是特定于Android的)。您可以使用它来表示此方法重写某个方法

使用它的原因是为了在创建要重写方法的方法时捕获错误,但由于某些错误,它没有捕获错误,例如方法名称中的键入错误、方法签名中的错误等。。例如,有时开发人员会:

class Foo { 
    public boolean equals(Foo other) {
       ...
作者打算重写超类“
equals
方法,但它没有(参数类型应该是
Object
)。该程序可以很好地编译,但不会按照作者的意图使用
Foo.equals

class Foo {
    @Override
    public boolean equals(Foo other) {
       ...
编译现在将给出一个错误,因为该方法不重写另一个方法。这就提前指出了问题,并希望能节省一些调试时间来跟踪问题。

@Override是一个很好的解决方案。它告诉编译器下面的方法是它的一个方法。例如,假设您实现了一个Person类

public class Person {
   public final String firstName;
   public final String lastName;

   //some methods

   @Override public boolean equals(Object other) {
      ...
   }
}
person类有一个equals()方法。equals方法已在Person的超类中定义。因此,上述equals()的实现是对个人equals()的重新定义。也就是说,Person覆盖equals()

在不显式注释的情况下重写方法是合法的。那么@Override注释有什么好处呢?如果您不小心试图以这种方式重写equals(),该怎么办:

public boolean equals(Person other) {
   ...
}
上面的案例有一个bug。您本想重写equals(),但没有。为什么?因为real equals()获取一个对象作为参数,而您的equals()获取一个人作为参数。编译器不会告诉你这个bug,因为编译器不知道你想重写它。据编译器所知,您实际上打算使用equals()。但如果您试图使用@override注释覆盖等于:

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

现在编译器知道您有一个错误。你想覆盖,但你没有。因此,使用@Override注释的原因是显式声明方法重写。

那么它将是一个全新的方法名?取决于我如何定义ir?