public static abstract class Translator {
public abstract String getLanguage();
public String translate() {
return "Я переводчик с " + getLanguage();
}
}
public static class EnglishTranslator extends Translator{
@Override
public String getLanguage() {
return "английского";
}
}
например тут без слова override программа прокомпилировалась бы, и делала бы тоже самое
неужели это просто для других программистов нужно писать?Саша
20 уровень
зачем нужно ключевое слово @override?
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Саша
13 июля 2019, 21:00
спасибо всем, ребят))
0
Justinian Judge в Mega City One Master
11 июля 2019, 21:25
джава девелоперы в 99.999% случаях пишут программы для других.
Другие будут читать нашу программу, другие будут его править, другие будут менять функционал и тд.
Поэтому правила стилистики, клин кода,solid, dry,kiss, first, java naming conventions и best practice очень важны.
То что это "итак скомпилировалась бы" это вообще не аргумент.
Вот пример реальной задачи, ты на работе, тебе дана задача изменить функционал кода:
Это очень просто конечно, но здесь есть одна очевидная ошибка, которую нужно исправить.
Этот код компилируется, работает и тд.
Сколько тебе нужно времени чтобы понять, что он делает?
А что должен делать?
И представь что тебе нужно не одну строку, а 100 таких строк поправить.
Поэтому чрезвычайно важно отойти от понятий "запустилось, выдает результат, значит можно и так". Нет, работоспособность кода и компилирование это одна из очень многих характеристик, кроме того, работоспособность джава кода стоит не на первом месте. Джава это не стандартный язык стартапов, где побыстрее в работу, джава это язык основная цель которого писать такие программы, которые потом легко изменяются. Если программу невозможно изменить или очень тяжело, толку от ее работоспособности может быть ноль, это могут быть убытки в миллиарды долларов. Я знаю и такие случаи.
Вот цена Оверрайда когда компилируется и без него :)
+5
Wladyslaw Java Developer Master
11 июля 2019, 21:56
плюс, насколько я знаю, если где-то ошибемся с сигнатурой метода, но будет присутствовать аннотация Override компилятор предупредит что такого метода в суперклассе нет и это не оверрайд, а отдельный метод.
+4
Justinian Judge в Mega City One Master
11 июля 2019, 22:11
да, для этого Оверрайд кроме всего прочего и пишется, иногда мы думаем что оверрайдим что-то, а компилятор красным сразу бац, чувак, ничего ты не оверрайдишь.
А так бы прошло компиляцию, мы бы думали что оверрайдим, кстати не раз такое в вопросах видел, я же переопределил метод. Да нет..не переопределил.
+2
dionisis2010
11 июля 2019, 20:16
она показывает что метод переопределен из другого класса
1. повышает читаемость кода
2. эти слова нужны для автоматического создания дакументации по программе (текствоый файл в котором описано что программа може)
3. компилятор благодаря этим словам проверяет некоторые возможные ошибки
В прогрммах из одого класса можно обойтись, но в целом они важны
+3