Интерфейс:
- Интерфейсы — это поведенческие контракты. Это дает дополнительное поведение нашему объекту. Например. Клонируемый
- Интерфейс может иметь методы и переменные, но методы, объявленные в интерфейсе, по умолчанию являются общедоступными абстрактными.
- Начиная с Java 8, у нас могут быть методы по умолчанию и статические методы с телом в интерфейсе.
- Начиная с Java 9, в интерфейсе могут быть частные методы.
- Интерфейсы образуют контракт между классом и внешним миром, и этот контракт применяется компилятором во время сборки.
- Интерфейс, который не имеет метода, известен как Marker или Tagged interface, например, Serializable, Cloneable, Remote и т. д. Они используются для предоставления некоторой важной информации для JVM, чтобы JVM могла выполнять некоторые действия. полезная операция.
- Интерфейс, который имеет только один абстрактный метод, известен как Функциональный интерфейс.
Абстрактный класс:
- Класс, объявленный с помощью ключевого слова abstract, является абстрактным классом.
- Не может быть создан, и он может иметь или не иметь абстрактные методы.
- Может иметь и обычные методы, и конструктор.
- Использование конструктора заключается в инициализации переменных-членов, чтобы не создавать объект
- Например. Если вы не собираетесь использовать суперкласс в коде, т. е. ваш суперкласс является просто базой для повторного использования кода, вы можете сохранить его как абстрактный класс, чтобы избежать ненужного создания экземпляров клиентскими классами.
Пример:
Транспортное средство — это абстрактный класс, а автопилот — это интерфейс. Автопилот — это функция для типа транспортного средства, не обязательно, чтобы все реализации транспортных средств реализовывали его.