Я должен добавить @Override аннотацию при реализации абстрактных методов в Java?

В swift 3.0 Предположим, что ваше имя переменной UITextField - textField.

textField.font = UIFont(name: "HelveticaNeue-Medium", size: 17)// for medium

name: "HelveticaNeue-Bold" // for bold
52
задан nabster 9 July 2019 в 06:23
поделиться

4 ответа

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

Единственное реальное отличие состоит в том, что без аннотации, если метод в суперклассе / интерфейсе изменяется или удаляется, рассматриваемая реализация просто становится «нормальным» методом этого класса. Таким образом, вы должны добавить аннотацию, если вы реализуете метод исключительно для выполнения контракта; и вам, вероятно, не стоит добавлять его, если метод имеет смысл в вашем классе независимо от каких-либо реализованных интерфейсов или унаследованных абстрактных методов.

69
ответ дан 7 November 2019 в 09:16
поделиться

Да - опять же, он сообщает компилятору: «Я действительно хочу переопределить здесь метод. Если там нет соответствующего метода для переопределения, я сделал ошибку и хочу, чтобы мне об этом сказали! »

Лично мне жаль, что это просто аннотация, а не часть языка (как в C #), но это, конечно, преимущество ретроспективного анализа.

21
ответ дан 7 November 2019 в 09:16
поделиться

Да. Это рекомендовано Джошуа Блохом в «Эффективной Java».

14
ответ дан 7 November 2019 в 09:16
поделиться
[

] На самом деле, Джошуа Блох в последнем абзаце страницы 178 в []Effective Java (2-е изд.) [] говорит, что для методов конкретных классов, которые переопределяют абстрактные методы, не обязательно использовать аннотацию []Override[], потому что компилятор все равно выдаст ошибку. Однако, "это не вредит"[

]. [

] Я бы порекомендовал выбрать стратегию и придерживаться ее последовательно. [

]
6
ответ дан 7 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: