Значение @override в Android Studio

Я совершенно новичок в Android Studio, и я хочу знать цель @Override заявление в Android Studio.

7 ответов


@Override является аннотация Java. Он сообщает компилятору, что следующий метод переопределяет метод его суперкласса. Например, скажем, вы реализуете класс человек.

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 () для людей. Это, так сказать, человека переопределяет equals ().

законно переопределять методы без явного аннотирования. Итак, для чего хороша аннотация @Override? Что делать, если вы случайно попытались переопределить Equals() таким образом:

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

В приведенном выше случае есть ошибка. Вы хотели переопределить equals (), но не сделали этого. Почему? потому что real equals() получает объект в качестве параметра, а ваш equals () получает человека в качестве параметра. Компилятор не собирается рассказывать вам об ошибке, потому что компилятор не знает,что вы хотели отменить. Насколько может судить компилятор, вы на самом деле хотели перегрузка equals(). Но если вы попытались переопределить equals, используя аннотацию @Override:

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

Теперь компилятор знает, что у вас ошибка. Вы хотели отменить, но не сделали этого. Поэтому причина использования аннотации @Override заключается в явном объявлении переопределения метода.


это аннотация 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.

указывает, что объявление метода предназначено для переопределения объявления метода в суперклассе. Если метод аннотируется этим типом аннотации, но не переопределяет метод суперкласса, компиляторы необходимы для создания сообщения об ошибке.

также См.

пример:

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 @переопределить использование


Это специальная, зарезервированная компилятором аннотация Java, которая обозначает, что вы переопределяете метод суперкласса.