Интерфейс:

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

Абстрактный класс:

  • Класс, объявленный с помощью ключевого слова abstract, является абстрактным классом.
  • Не может быть создан, и он может иметь или не иметь абстрактные методы.
  • Может иметь и обычные методы, и конструктор.
  • Использование конструктора заключается в инициализации переменных-членов, чтобы не создавать объект
  • Например. Если вы не собираетесь использовать суперкласс в коде, т. е. ваш суперкласс является просто базой для повторного использования кода, вы можете сохранить его как абстрактный класс, чтобы избежать ненужного создания экземпляров клиентскими классами.

Пример:

Транспортное средство — это абстрактный класс, а автопилот — это интерфейс. Автопилот — это функция для типа транспортного средства, не обязательно, чтобы все реализации транспортных средств реализовывали его.