Руководство для начинающих по использованию интерфейсов в Java

Интерфейс – это ссылочный тип, который используется для обеспечения выполнения контракта с классом. Контракт относится к обязательству реализовать методы, определяемые интерфейсом.

Интерфейсы обеспечивают абстракцию между методами, которые они определяют, и тем, как пользователь реализует их в классе. Практический пример использования этого – API (интерфейсы прикладного программирования).

API-интерфейсы позволяют вашей программе взаимодействовать с другими программами, не зная, как они реализованы. Это важно как по причинам собственности (для компании, владеющей правами), так и для облегчения разработки с вашей стороны.

Давайте посмотрим, как использовать интерфейсы Java.

Определение интерфейсов

Чтобы объявить интерфейс, поместите ключевое слово interface перед именем интерфейса.

 interface Car{
// constant declarations, if any
int tyres = 4;
// method signatures
int lights (int brightness);
int turn (int tyres, String direction){
// some code
}
}

В заголовке интерфейса вы также можете указать уровень его видимости перед ключевым словом interface .

Значения в интерфейсе постоянны. Эти значения по умолчанию являются общедоступными, статическими и окончательными . Следовательно, нет необходимости использовать эти ключевые слова при объявлении значений в теле интерфейса.

Связанный: Как управлять областью переменной в Java

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

Абстрактные методы объявляются без фигурных скобок в теле метода. См. Строку 7 в приведенном выше коде. Статические методы объявляются путем ввода имени метода с помощью ключевого слова, статические методы и методы по умолчанию объявляются с модификатором по умолчанию .

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

Это свойство интерфейсов может иметь некоторые недостатки. Рассмотрим случай, когда поставщик интерфейса прикладного программирования (API) решает добавить больше методов к своим интерфейсам, но несколько приложений основаны на старых интерфейсах. Разработчикам, использующим старые интерфейсы в своих программах, придется переписывать свой код, что непрактично.

Вот тут и пригодятся методы по умолчанию . Они позволяют поставщикам API добавлять дополнительные методы в свои интерфейсы, обеспечивая бинарную совместимость со старыми версиями интерфейсов.

 default int getDirection ( String coordinates){
// write some code to give a default implementation
}

Вышеупомянутый метод показывает, как объявляется метод по умолчанию, называемый getDirection . Обратите внимание, что вы должны включить реализацию метода по умолчанию при его написании.

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

Теперь, когда мы определили интерфейсы в Java, мы можем перейти к тому, как вы можете их реализовать. Вы узнаете об этом в разделе ниже.

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

Чтобы реализовать интерфейс, используйте ключевое слово реализации, используя этот синтаксис:

 class A implements interface P{
}

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

Связанный: Введение в использование связанных списков в Java

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

Пример:

 class A implements interface P, Q, R{
}

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

 class A extends B implements C, D{
}

Интерфейсы позволяют множественное наследование в Java. Обычно класс может расширять только один класс (одиночное наследование). Интерфейсы – это единственный способ, которым Java может выполнять множественное наследование.

Интерфейсы также могут расширять другие интерфейсы, так же как класс может расширять другой класс. Дочерний интерфейс наследует методы интерфейса, который он расширяет.

См. Пример ниже:

 interface A extends B{
}

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

Теперь у вас есть некоторые базовые знания об интерфейсах Java

Интерфейсы в Java демонстрируют абстракцию, один из четырех столпов объектно-ориентированного программирования. Полиморфизм – один из этих четырех столпов. Это относится к способности метода принимать разные формы.

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