Что значит @Override?
public class NaiveAlien extends Alien
{
@Override
public void harvest(){}
}
Я пытался понять код моего друга, и я не понимаю синтаксис @Override в коде. Что это делает и зачем нам нужно кодирование? Благодарю.
3 ответа
Это подсказка для компилятора, чтобы он знал, что вы переопределяете метод родительского класса (или интерфейса в Java 6).
Если компилятор обнаружит, что нет функции переопределения, он предупредит вас (или об ошибке).
Это чрезвычайно полезно для быстрой идентификации опечаток или изменений API. Скажем, вы пытаетесь переопределить метод вашего родительского класса harvest()
но по буквам harvset()
, ваша программа будет беззвучно вызывать базовый класс, и без @Override
Вы не будете предупреждены об этом.
Аналогично, если вы используете библиотеку, и во второй версии библиотеки, harvest()
был изменен, чтобы принимать целочисленный параметр, вы больше не будете его переопределять. Снова, @Override
быстро скажу вам.
Эта функция называется аннотацией. @Override
это синтаксис использования аннотации, чтобы сообщить компилятору: "эй, компилятор, я изменяю то, что собирает урожай в родительском классе", тогда компилятор может сразу сказать: "чувак, ты неправильно назвал его". Компилятор не будет компилироваться, пока вы не укажете его правильно.
Итак, без этого @Override
аннотации, компилятор не выдаст ошибку, и он будет считаться объявлением нового метода. Было бы трудно распознать ошибку в этой точке.
@Override
означает, что вы переопределяете метод базового класса. В java6 это также означает, что вы реализуете метод из интерфейса. Он защищает вас от опечаток, когда вы думаете, что переопределяете метод, но вы что-то опечатали.