Что значит @Override? - PullRequest
       17

Что значит @Override?

71 голосов
/ 03 декабря 2010
public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}

Я пытался понять код моего друга, и у меня не получился синтаксис @Override в коде. Что это делает и зачем нам нужно кодирование? Благодаря.

Ответы [ 3 ]

126 голосов
/ 03 декабря 2010

Это подсказка для компилятора, чтобы он знал, что вы переопределяете метод родительского класса (или интерфейса в Java 6).

Если компилятор обнаружит, что нет функции переопределения, он предупредит вас (или об ошибке).

Это очень полезно для быстрой идентификации опечаток или изменений API. Скажем, вы пытаетесь переопределить метод родительского класса harvest(), но пишите его по буквам harvset(), ваша программа будет беззвучно вызывать базовый класс, и без @Override у вас не будет никаких предупреждений об этом.

Аналогичным образом, если вы используете библиотеку и во второй версии библиотеки, harvest() был изменен для получения целочисленного параметра, вы больше не будете его переопределять. Опять же, @Override быстро скажет вам.

27 голосов
/ 31 декабря 2011

Эта функция называется аннотацией.@Override - это синтаксис использования аннотации, чтобы сообщить компилятору: «эй, компилятор, я изменяю то, что собирает урожай в родительском классе», тогда компилятор может сразу сказать: «чувак, ты его неправильно назвал».Компилятор не будет компилироваться, пока вы не укажете его правильно.

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

9 голосов
/ 11 декабря 2010

@Override означает, что вы переопределяете метод базового класса.В java6 это также означает, что вы реализуете метод из интерфейса.Он защищает вас от опечаток, когда вы думаете, что переопределяете метод, но что-то опечатали.

...