Рубрики
Без рубрики

Интерфейсы Java

📌 Интерфейсы в Java Интерфейс – это ссылочный тип, аналогичный классу, который может… С тегами java, codenewbie, программирование, учебник.

📌 Интерфейсы на Java

  1. Интерфейс – это ссылочный тип, аналогичный классу, который может содержать только константы, сигнатуры методов, методы по умолчанию, статические методы и вложенные типы.
  2. Интерфейсы не могут быть созданы – они могут быть реализованы только классами и расширены другими интерфейсами.
  3. Обратите внимание, что интерфейс может расширять любое количество интерфейсов. Объявление интерфейса может включать разделенный запятыми список всех интерфейсов, которые оно расширяет.

Тело Интерфейса

Тело интерфейса может содержать абстрактные методы, методы по умолчанию и статические методы . Все эти методы в интерфейсе являются неявно публичный , статический , и окончательный .

Реализация интерфейса

Класс может реализовывать более одного интерфейса. За ключевым словом implements следует разделенный запятыми список интерфейсов, реализованных классом.

Использование интерфейса в качестве типа

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

Эволюционирующие Интерфейсы

Чтобы избежать сценария, в котором реализующие классы должны измениться из-за дополнений к реализованному интерфейсу:

  1. Создайте новый интерфейс, который распространяется на измененный интерфейс. Таким образом, реализующим классам нужно только изменить, какой интерфейс реализовать, будь то дочерний или родительский. Теперь пользователи кода могут выбрать, продолжать ли использовать старый интерфейс или перейти на новый интерфейс.
  2. В качестве альтернативы, новые методы могут быть определены как методы по умолчанию. Поскольку реализации предоставляются для методов по умолчанию, пользователям, у которых есть классы, реализующие интерфейсы, улучшенные с помощью методов по умолчанию или статических методов, не нужно изменять или перекомпилировать их для размещения дополнительных методов.

Методы по умолчанию

Методы по умолчанию позволяют добавлять новые функциональные возможности в интерфейсы библиотеки для обеспечения двоичной совместимости с кодом, написанным для более старых версий этих интерфейсов.

  1. Метод по умолчанию в интерфейсе определяется с помощью ключевого слова default в начале подписи метода. Все объявления методов в интерфейсе, включая методы по умолчанию, неявно являются общедоступными, поэтому модификатор public можно опустить.

Расширение интерфейсов, содержащих Методы по умолчанию

Когда интерфейс с методом по умолчанию расширен,

  1. Нет необходимости упоминать метод по умолчанию вообще, который позволяет расширенному интерфейсу наследовать метод по умолчанию
  2. Метод по умолчанию может быть объявлен повторно, что делает его абстрактным
  3. Метод по умолчанию можно переопределить, переопределив его

Статические Методы

Статический метод также может быть определен в интерфейсе. Это метод, который связан с классом, в котором он определен, а не с каким-либо объектом. Каждый экземпляр класса совместно использует свои статические методы. Теперь это помогает в организации вспомогательных методов.

Интеграция методов по умолчанию в существующие библиотеки

Методы по умолчанию позволяют добавлять новые функциональные возможности в существующие интерфейсы и обеспечивают двоичную совместимость с кодом, написанным для более старых версий этих интерфейсов. В частности, методы по умолчанию позволяют добавлять в существующие интерфейсы методы, которые принимают лямбда-выражения в качестве параметров.

Резюме

  1. Объявление интерфейса может содержать сигнатуры методов, методы по умолчанию, статические методы и определения констант. Единственными методами, которые имеют реализации, являются методы по умолчанию и статические методы
  2. Класс, реализующий интерфейс, должен реализовывать все методы, объявленные в интерфейсе.
  3. Имя интерфейса можно использовать везде, где можно использовать тип.

Выпьем за продолжение обучения 🍻 !

ресурсы

[1] Java-документ, что такое интерфейс

Оригинал: “https://dev.to/pat_the99/java-interfaces-306o”