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

0

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

фигурные скобки.

В составе интерфейса могут присутствовать члены трех категорий:

• константы (поля);

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

Константы в интерфейсах

В состав интерфейса могут быть включены объявления именованных констант.

Такие константы определяются как поля, но им неявно присваиваются признаки public, statiс и final – и вновь, по традиции, соответствующие модификаторы

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

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

 

Interface Verbose {

int SILENT        = 0;      // Безмолвный

int TERSE        = 1;      // Немногословный

int NORMAL     = 2;      // Нормальный

int VERBOSE   = 3;      // Многоречивый

 

void setVerbosity(int level);

int getVerbosity();

 }

 

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

 

 

 

Методы в интерфейсах

 

 

Методы, объявляемые в составе интерфейса, неявно получают признак abstract, поскольку не содержат (и не могут содержать) блок тела. По этой причине блок тела в объявлении заменяется символом точки с запятой. В соответствии с принятым соглашением модификатор abstract в объявлении метода не указывается

В объявлении метода, при надлежащего интерфейсу, запрещается задавать и какие-либо другие модификаторы. Все методы неявно помечаются признаком public, поэтому использование других модификаторов доступа не допускается (publiс также обычно исключается). В объявлениях методов нельзя употреблять модификаторы, имеющие отношение к особенностям реализации – такие как native, synchronized или strictfp, – поскольку интерфейс по определению не способен регламентировать правила реализации

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

Модификаторы в объявлениях интерфейсов

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

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

·      abstract. Каждый интерфейс по определению абстрактен, поскольку все его методы не содержат блоков реализации. И вновь, в соответствии с принятым соглашением, модификатор abstract в объявлении интерфейса опускается.

·      strictfp. Объявление интерфейса, помеченного признаком strictfp, предполагает, что все операции с плавающей запятой, которые позже Могут быть предусмотрены в реализующем коде, должны выполняться точно и единообразно всеми виртуальными машинами Java. При этом не предполагается, что каждый метод интерфейса неявно получает тот же признак strictfp, поскольку этот вопрос относится к компетенции классов, обеспечивающих конкретную реализацию. (За более подробными сведениями обращайтесь к разделу 6.6.3 на странице 175.)

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

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии