Зачем в Java8 добавили default-методы для интерфейсов (усложнение); если можно было снять запрет методам интерфейсов иметь тело, а тем что не имеют – пусть явно были бы abstract (облегчение, с тем же итогом)? Другими словами, чем default-методы отличаются от instance (нужен же был зачем-то такой манёвр в сторону усложнения)?
dell
16 уровень
Смысл внедрения default-методов в Java8?
Решен
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
IceBergMaster
2 декабря 2019, 20:57решение
А в чём облегчение, если на одно лишнее слово default, теперь нужно будет писать десять лишних abstract?
Если методы которые были abstract неявно, теперь нужно указывать только явно, повлечёт за собой проблемы совместимости.
Если снять запрет иметь тело, то интерфейсы практически превратятся в абстрактные классы, а множественное наследование не просто так запретили, рано или поздно наплодится куча одинаковых методов в разных интерфейсах.
+3
dell
2 декабря 2019, 21:08
Облегчение в том, что голову морочить не нужно, ибо все 100 лет знают abstract - нет тела, просто - есть тело (по абстрактным класса). А default - это что то новое (только суть старая).
совместимость – ок
всего одно лишнее слово default – ок
интерфейсы практически превратятся в абстрактные классы – wtf: произошло 1 в 1 тоже самое, только думать больше надо; и сейчас наплодиться могут, разницы в этом плане ноль.
0
IceBergMaster
2 декабря 2019, 21:19решение
Все 100 лет знают, что в интерфейсах все методы по умолчанию abstract.
Морочить голову, это 100 раз писать слово abstract там, где его можно было и не писать, вся суть интерфейсов изначально была в том, что 100% методов которые там находятся - абстрактные, следовательно это модификатор можно было смело выпилить. Добавили новую фичу? -ок, вот вам новое слово default.
"и сейчас наплодиться могут, разницы в этом плане ноль" - вполне могут, и будет ошибка, именно поэтому default методы это скорее исключение из правила и полезная фича, может будет один default на сто старых добрых абстрактных. Суть интерфейсов должна оставаться старой, по крайней мере пока не будет решена проблема множественного наследования.
+3