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

public class NaiveAlien extends Alien
{

    @Override
    public void harvest(){}

}

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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