Size: a a a

2021 February 01

C

Cargeh in pro.jvm
Евгений Михайлов
вообщем с этими новвоведениями разница между интерфейсом и расширением объектов (extends) все более размыта
единственное что extends можно только один класс а интерфейсов реализовать много
имхо, ничего не размыто, пожалуйста не надо абузить дефолтные методы в интерфейсах
источник

E

Evgeniy ♎️ in pro.jvm
так проблема в том что теперь никто не мешает напихать какогто состояние в интрефейс и делать там логику
таким образом  это уже не контракт нифига
источник

C

Cargeh in pro.jvm
Evgeniy ♎️
так проблема в том что теперь никто не мешает напихать какогто состояние в интрефейс и делать там логику
таким образом  это уже не контракт нифига
никто не мешает писать говнокод, согласен. Но не надо так делать
источник

E

Evgeniy ♎️ in pro.jvm
ну а зачем в приницпе дали такую возможность в языке?)
источник

E

Evgeniy ♎️ in pro.jvm
можно было не давать и всё
источник

V

V in pro.jvm
Evgeniy ♎️
так проблема в том что теперь никто не мешает напихать какогто состояние в интрефейс и делать там логику
таким образом  это уже не контракт нифига
а что ты подразумевешь под «состоянием» в интерфейсе
источник

М

Михаил in pro.jvm
Евгений Михайлов
вообщем с этими новвоведениями разница между интерфейсом и расширением объектов (extends) все более размыта
единственное что extends можно только один класс а интерфейсов реализовать много
в интерфейсах поля public static final
источник

C

Cargeh in pro.jvm
Evgeniy ♎️
ну а зачем в приницпе дали такую возможность в языке?)
обратная совместимость, судя по всему
источник

A

Artjom Kalita in pro.jvm
Состояние в интерфейс не напихаешь
источник

AK

Alexander Komarov in pro.jvm
Evgeniy ♎️
ну а зачем в приницпе дали такую возможность в языке?)
ну например чтобы не писать одинаковый код в каждом классе, кто реализует интерфейс. плюс в некоторых случаях чтобы не ломать обратную совместимость
источник

A

Artjom Kalita in pro.jvm
Михаил
в интерфейсах поля public static final
Это статичные переменные - константы
источник

V

V in pro.jvm
Михаил
в интерфейсах поля public static final
интересное состояние
источник

E

Evgeniy ♎️ in pro.jvm
Alexander Komarov
ну например чтобы не писать одинаковый код в каждом классе, кто реализует интерфейс. плюс в некоторых случаях чтобы не ломать обратную совместимость
Ну а чем абстракт класс не устраивал
Как раз для таких случаев)
источник

A

Artjom Kalita in pro.jvm
потому-что абстрактный класс это слишком жесткая привязка
источник

A

Artjom Kalita in pro.jvm
Composition over inheritance же
источник

М

Михаил in pro.jvm
Евгений Михайлов
Наследование (англ. inheritance) — концепция объектно-ориентированного программирования, согласно которой абстрактный тип данных может наследовать данные и функциональность некоторого существующего типа, способствуя повторному использованию компонентов программного обеспечения.

с 11 версии java граница стала более размытой
потому как в интерфейсе можно и переменные объявить и функциональность по умолчанию реализовать....
так какие переменные можно в интерфейсах объявлять?
источник

D

Dima in pro.jvm
Artjom Kalita
Состояние в интерфейс не напихаешь
видел хак на хабре, смогли)
источник

AK

Alexander Komarov in pro.jvm
наши руки не для скуки
источник

A

Artjom Kalita in pro.jvm
Dima
видел хак на хабре, смогли)
Ну если только создать коллекцию  и  туда пихать значения - то получается не только как константа... но это явная упоротость и на  ПР за такое по рукам бьют
источник

D

Dima in pro.jvm
могу ошибаться, но кажется это был пост @olegchir
источник