Абстрактные классы в Java
Абстрактные классы в Java используются для создания классов, которые могут содержать абстрактные методы – методы без реализации, которые должны быть переопределены в подклассах. Абстрактный класс не может быть инициирован, то есть мы не можем создать объекты этого класса. Зато он может содержать как абстрактные методы, так и обычные методы с реализацией. Для чего же вообще нужны классы, экземпляры которых мы не можем создать? Чтобы получше понять суть абстрактных классов рекомендую сначала прочитать статью Зачем нужно наследование в ООП...
В Java и интерфейсы, и абстрактные классы используются для определения контрактов, которые классы должны реализовать, но у них есть различия в том, как они работают и для каких целей используются. Интерфейс в Java — это специальный тип, который определяет набор абстрактных методов (методов без реализации), которые должны быть реализованы классами, имплементирующими этот интерфейс. Интерфейсы позволяют задавать общие контракты для классов, которые могут быть реализованы по-разному. Ключевые особенности...