Интерфейс Java и наследование

Я нахожу, что у меня есть подобные переговоры много. С одной стороны, у Вас есть компактный, эффективный метод достижения Вашей цели. С другой стороны, у Вас есть что-то, что остальная часть Вашей команды не могла бы понять, будучи сложно поддерживать в будущем.

Мое общее правило состоит в том, чтобы спросить, является ли используемая техника чем-то, что разумно ожидать, что программисты в целом будут знать. В этом случае я думаю, что разумно ожидать, что программисты будут знать, как использовать булевы операторы, таким образом с помощью xor в, если оператор хорошо.

, Поскольку пример чего-то, что не было бы хорошо, возьмите прием использования xor для свопинга двух переменных, не используя временную переменную. Это - прием, с которым я не ожидал бы, что все будут знакомы, таким образом, он не передаст обзор кода.

8
задан Joachim Sauer 1 August 2009 в 01:14
поделиться

5 ответов

Основное различие - 15 совершенно ненужных символов: -)

Когда ваш родительский класс реализует какой-либо интерфейс, все методы интерфейса либо реализуются им, либо определяются (явно или неявно) как абстрактные . В любом случае ваш класс, расширяющий родительский класс, наследует все эти методы и неявно реализует исходный интерфейс.

14
ответ дан 5 December 2019 в 08:54
поделиться

Нет никакой разницы. Дополнительные орудия безвредны, но бесполезны.

3
ответ дан 5 December 2019 в 08:54
поделиться

Можно было бы возразить, что второе выражение «расширяет X реализует Y» многословно, но несколько лишних символов - хорошее напоминание. Взгляните на ArrayList и т. Д. Я почти уверен, что они используют длинную форму - extends AbstrsvtList реализует List.

В конце концов, большинство разработчиков быстро набирают текст, поэтому несколько лишних символов практически не требуют времени на ввод. Почему так много целей сводится к тому, чтобы печатать меньше, когда речь должна идти о ясности и устранении двусмысленности, а не о констатации всех фактов ...

2
ответ дан 5 December 2019 в 08:54
поделиться

Нет причин для реализации foo. Поскольку bar - это foo, barbar тоже будет.

0
ответ дан 5 December 2019 в 08:54
поделиться

Что ж, я согласен со всеми комментариями, которые были высказаны по этой проблеме, что это действительно ненужная реализация, хотя я мог бы сделать это в случае, если я хочу переопределить поведение barbar в отношении реализации foo, чтобы я мог сделать это, чтобы принудительно переопределить эти методы и заставить IDE автоматически реализовать это для меня !!

Но это то же самое, что переопределить эти функции в barbar

0
ответ дан 5 December 2019 в 08:54
поделиться
Другие вопросы по тегам:

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