Абстрактный класс необходим для того чтобы, описать набор общих свойств и поведений, присущих конкретной группе объектов. Абстрактный класс - это класс на основании которого нельзя создать объект (экземпляр класса), но это можно сделать его классам потомкам (при условии что они не абстрактные). Абстрактные классы объявляются с ключевым словом abstract и могут содержать абстрактные методы. Данные методы не имеют тела и должны быть реализованы в наследниках. Абстрактные классы могут иметь полностью реализованные методы, поля и конструкторы.