Где и для чего используется модификатор `abstract`?
Абстрактный класс — это класс, помеченный модификатором abstract, который не может быть инстанцирован напрямую и предназначен для наследования.
Абстрактный класс
Абстрактные классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов.
Абстрактный класс может содержать:
- Конструкторы — они вызываются из конструкторов подклассов через
super(); - Поля с состоянием (как
static, так и экземплярные); - Обычные (неабстрактные) методы с реализацией;
- Абстрактные методы без реализации.
Абстрактный метод
Метод, помеченный ключевым словом abstract — абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.
Ключевой вывод
Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.