Не один раз написано о том, в чем разница между интерфейсом и абстрактным классом. В большинстве случаев разговор заканчивается фразами, сводящимися к следующему: "Абстрактный класс — это абстрактный класс, а интерфейс — это интерфейс..."
Могли бы вы ответить на простой вопрос: В каких случаях при проектировании вы делаете выбор в пользу интерфейса, а в каких — в пользу абстрактного класса? Какими признаками должны обладать сущности предметной области, чтобы быть отнесенными к интерфейсам? А к абстрактным классам?
Я думаю так или иначе все сталкиваются с предметной областью

. И наверняка многие имеют опыт ее анализа. Очень хотелось бы зачерпнуть немного ваших знаний

.
P.S. Разумеется, вопрос относиться к конкретному языку — Java, но и к понятию "интерфейс" как таковому.
03.07.06 13:19: Перенесено модератором из 'Java' — Blazkowicz