Про implement интерфейсов

86
20 июня 2021, 23:10

обнаружено, что если

  • 1) создать класс A
  • 2) создать интерфейс IA
  • 3) создать класс B
  • 4) создать класс D
  • 5) в классе A имплементировать интерфейс IA
  • 6) в классе A реализовать методы имплементированного интерфейса IA
  • 7) класс B наследовать от класса A
  • 8) в класс B имплементировать интерфейс IA
  • 9) в классе B не реализовать методы интерфейса IA (логично, так как в суперклассе данного класса уже требование реализации выполнено)

то

  • 1) компилятор не ругается
  • 2) в классе D можно вызвать объект класса B через ссылку интерфейса IA

Но каков может быть смысл данного факта/лайфхака, если в случае удаления имплементации интерфейса IA из класса B - все равно будет возможно вызвать объект класса B через ссылку интерфейса IA?

уточню вопрос: почему компилятор не предупреждает о лишнести имплементации интерфейса IA в класс B?

дополнительно: в случае если суперкласс является абстрактным классом, можно было пробовать понять логику данного лайфхака следующим образом:

  • часть методов интерфейса можно реализовать в абстрактном классе (так как абстрактный класс не обязан реализовать все методы имплементированных интерфейсов)
  • другая часть методов данного интерфейса в классе наследнике

Но по сути и тут логическая нестыковка в том, что такой подход тоже не придает смысла двойному имплементацию одного и того же интерфейса двум классам (по одной имплементации для каждого класса), один из которых наследник другого.

Укреплю свою странную находку с тем, что есть использование данного лайфхака для класса ArrayList и его суперкласса AbstractList, а общий интерфейс - интерфейс List, в смысле данный интерфейс присутствует и в AbstractList и в ArrayList.

READ ALSO
Как выйти из цикла по другому?

Как выйти из цикла по другому?

Есть некий цикл (пример)

78
Как увеличить размер кучи в Android Studio (Java Android Studio)

Как увеличить размер кучи в Android Studio (Java Android Studio)

Как увеличить размер кучи в Android Studio

103
Проблема при запуске Андроид Студио

Проблема при запуске Андроид Студио

При запуске Андроид Студио появляется следующая запись:

119
ConverterNotFoundException: No converter found capable of converting from type

ConverterNotFoundException: No converter found capable of converting from type

Помогите разобраться в двух проблемах

255