Введение в программирование

Объявление интерфейса


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

Реализация интерфейса всегда выполняется в классе, который использует данный интерфейс.

Один класс может реализовывать несколько интерфейсов, и один интерфейс может использоваться несколькими классами.

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

Объявление интерфейса может иметь следующее формальное описание:

МодификаторИнтерфейса ИдентификаторИнтерфейса extends СписокНаследуемыхИнтерфейсов {ТелоИнтерфейса}

Самым простым примером объявления интерфейса может быть следующий код:

interface MyColors { int RED = 1, YELLOW = 2, BLUE = 4; }

Интерфейс может иметь в качестве предков только интерфейсы.

Интерфейс может иметь модификаторы public и abstract. Язык Java подразумевает, что каждый интерфейс по умолчанию имеет модификатор abstract, который не рекомендуется указывать явно.

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

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

Любая переменная интерфейса по умолчанию считается переменной с модификаторами public, static и final и обязательно должна быть инициализирована константным выражением. Также каждая переменная в теле интерфейса неявно считается переменной с модификатором.

Метод, объявленный в теле интерфейса, по умолчанию считается методом с модификаторами abstract и public. Объявление метода завершается точкой с запятой и не содержит тела метода, заключенного в фигурные скобки.

Метод интерфейса не может иметь модификаторов final или static.

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



Содержание раздела