Существует много применений для абстрактного класса. Абстрактный класс - это тот, который не может иметь прямых экземпляров.
В разработке программного обеспечения это один из способов описания интерфейса. Некоторые из заявленных операций могут быть реализованы в суперклассе. Любые оставшиеся реализации должны быть указаны в подклассах. Независимо от того, где существуют реализации, абстрактный класс означает, что не может быть никаких прямых экземпляров, только экземпляров некоторого не абстрактного подкласса.
В анализе домена абстрактный класс является способом моделирования абстракции. Например, подумайте об абстракции Role
. Полезно сказать, что Person
воспроизводит номер Roles
. Тем не менее, нет примера Role
, который имеет смысл, без него также более конкретный вид Role
, такой как Employee
, Fireman
или Teacher
. Для этой ситуации вы не только хотите, чтобы Role
был абстрактным, вам также нужен covering axiom. Подробнее об этом, пожалуйста, читайте https://stackoverflow.com/a/35950236/2596664.