Введение в абстрактные классы в C#
Абстрактный класс описывает общую роль для группы близких типов. У всех наследников одни и те же обязанности, но детали выполнения различаются.
Типичный пример - семейство фигур на плоскости. У каждой фигуры можно спросить площадь, но формула зависит от вида: у круга одна, у прямоугольника другая. База фиксирует сам вопрос и общие данные, а конкретные классы отвечают числом.
Такой базовый тип удобен, когда нужен один общий язык для разных реализаций: документы разного формата, пользователи разных ролей, транспортные средства разных видов. Объект создают у конкретного наследника, а абстракция связывает их в одну иерархию и позволяет обрабатывать их единообразно.