Подтвердить что ты не робот

Значение android @override

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

4b9b3361

Ответ 1

@Override - это аннотация Java. Он сообщает компилятору, что следующий метод переопределяет метод его superclass. Например, скажем, вы реализуете класс 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() является переопределением равных() для Лица. То есть, человек переопределяет equals().

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

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

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

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

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

Ответ 2

Его аннотация Java (не для Android). Вы используете это для обозначения этого метода для переопределения метода.

Причина его использования заключается в том, чтобы ловить ошибки при создании метода, который вы намерены переопределить, но через некоторую ошибку это не так, например. typo в имени метода, ошибке в сигнатуре метода и т.д. Например, иногда разработчикам это:

class Foo { 
    public boolean equals(Foo other) {
       ...

Автор намеревался переопределить метод суперкласса equals, но он не имеет значения (тип параметра должен быть Object). Программа будет компилироваться отлично, но не будет использовать Foo.equals, как предполагал автор.

class Foo {
    @Override
    public boolean equals(Foo other) {
       ...

Теперь компиляция даст ошибку, потому что метод не переопределяет другой метод. Это указывает на проблему раньше и, надеюсь, экономит время отладки, устраняя проблему.

Ответ 3

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

Ответ 4

@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){

    }

}

Ответ 5

Это aa annotation в Java. Он отмечает, что метод предназначен для переопределения метода в суперклассе.

Ответ 7

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

Ответ 8

Его java Anotation Ваш код не требует корректной работы @override. @override Это то, что использует компилятор, чтобы помочь вам. Вы сообщаете компилятору, что вы переопределяете метод/функцию в классе, на который вы наследуете. Почему это полезно? Ну, как только компилятор знает, что вы намерены переопределить, он может помочь вам определить ошибки в вашем коде.

public class Person {

public final Строка firstName;  public final Строка lastName;

//некоторые методы

@Override public String getName() {     ...  } }

public class Employee extends Person {

    public String get name() {
   ......
}

Здесь компилятор будет показывать любые ошибки и будет счастливым, потому что он знает, что вы пытаетесь переопределить метод.

Но

public class Employee extends Person {

     @Override
     public String getname() {
        .....
}

Здесь вы поймаете свою ошибку и получите ошибку времени компиляции...