Java

Зачем в Java придумали абстрактные классы?

Только не говорите, что для реализации полиморфизма. Это возможно сделать и обычным классом или интерфейсом.
В Java много заимствований из C++. Вот и абстрактные классы заимствовали. В C++ нет интерфейсов.
Как без абстрактных классов реализовать класс, у которого не все методы определены? Конечно, можно сделать пустой метод. Преимущество абстрактного метода в том, что его необходимо определить в потомке (если он не абстрактный). Пустой метод можно забыть переопределить.
АЗ
Алексей Звягинцев
58 065
Лучший ответ
Только для реализации полиморфизма. Стандарт де факто ООП к этому настойчива призывает. Хотя почему то не всех призвал например к множественному наследованию как в плюсах.
Димон Исаков
Димон Исаков
55 850
возможно и обычным интерфейсом, но иногда абстрактный класс удобнее
Чтобы школьники мозгами думали
Ринат ©
Ринат ©
24 151
Георгий Кузьминых По вашей аватарке не видно, что вы специалист.
Пиво - абстрактный класс, Балтика 7 - не абстрактный класс.
Балтика 7 существует, ее можно создать. А пиво - какое конкретно пиво
ОК
Олег Калинин
19 655
Абстрактные классы придумали далеко не в java. И делалось это для соблюдения признаков ООП в едином разветвленном дереве встроенных в язык библиотек, в дельфи и сибилдере (с++) это древо vcl компонентов в ява, врать не буду, не знаю.
Конкретно в Java, думаю оно осталось для совместимости с внешними библиотеками написанными не на java, например, т. к. интерфейсы есть не везде. О чем вам уже говорили.
Вообщем все как обычно, если что то есть, но вы не знаете для чего, то это означает только то именно вы, и я не знаем, для чего, а вовсе не то, что это не нужно)