Меня зовут Андрей Слободяник, я уже более 10 лет работаю в Java enterprise проектах. В каждом из них были данные в базе, а доступ к ним осуществлялся с помощью JPA/Hibernate. При этом фреймворк использовался, как мне кажется, не совсем правильно: код мог быть компактнее, а производительность выше.
В последнее время я побывал по обе стороны баррикад, спрашивал сам и спрашивали меня, и вот, хочу поделиться впечатлениями с коллегами.
В чём отличие между абстрактным классом и интерфейсом? В чём отличие между композицией и наследованием? Так получилось, что эти вопросы я задал довольно большому количеству людей на собеседованиях. И, как мне кажется, есть определённое непонимание этих базовых концепций, вернее, расхождение между теорией и практикой.