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

Определение интерфейса во многом подобно определению класса. Общая форма интерфейса имеет следующий вид:

доступ interface имя {
возвращаемый_тип имя_метода1(список_параметров);
возвращаемый_тип имя_метода2(список_параметров) ;
тип имя_коцечной_переменной1 = значение;
тип имя_конечной_переменной2 = значение;
// ...
Возвращаемый_тип имя_методаN(список_параметров) ;
тип имя_конечной_переменнойN = значение;
}

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

Переменные могут быть объявлены внутри объявлений интерфейсов. Они неявно объявляются как final и static — т.е. реализующий класс не может их изменять. Кроме того, они должны быть также инициализированы. Все методы и переменные неявно объявляются как public.

Ниже приведен пример определения интерфейса. В нем объявляется простой интерфейс, который содержит один метод callback (), принимающий единственный целочисленный параметр.

interface Callback {
void callback(int param);
}