Абстрактные классы и интерфейсы
Абстрактные классы:
Абстрактный класс в Java - это класс, который содержит один или несколько абстрактных методов.
Абстрактный метод - это метод, который объявлен, но не имеет реализации в абстрактном классе. Реализация абстрактного метода оставляется на усмотрение подкласса.
Абстрактные классы нельзя инстанциировать, т.е. нельзя создать объект абстрактного класса. Они используются в основном для создания шаблонов, которые наследуются подклассами для предоставления конкретной реализации.
Абстрактный класс может содержать как абстрактные методы, так и обычные методы с реализацией.
Для объявления абстрактного класса используется ключевое слово
abstract
.
Пример:
Интерфейсы:
Интерфейс в Java - это абстрактный тип данных, определяющий методы, но не предоставляющий их реализации.
В интерфейсе могут быть только абстрактные методы (до Java 8), а также методы с реализацией и статические методы (начиная с Java 8).
Классы могут реализовывать (implements) один или несколько интерфейсов. При этом класс обязан предоставить реализацию всех методов интерфейса.
Интерфейсы предоставляют способ реализации множественного наследования в Java.
Для объявления интерфейса используется ключевое слово
interface
.
Пример:
Подведем итоги:
Абстрактные классы предоставляют частичную реализацию, в то время как интерфейсы определяют контракт для классов.
Класс может наследоваться только от одного класса (абстрактного или не абстрактного), но может реализовывать несколько интерфейсов.
Используйте абстрактные классы, если хотите предоставить базовую реализацию и иметь возможность расширения этой реализации. Используйте интерфейсы, если хотите определить контракт для классов без предоставления какой-либо реализации.
Last updated
Was this helpful?