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