Реализация интерфейсов
Как только интерфейс определен, его может реализовать один или более классов. Чтобы реализовать интерфейс, в определение класса потребуется включить конструкцию implements, а затем создать методы, определенные интерфейсом. Общая форма класса, который содержит выражение implements, имеет следующий вид:
доступ class имя_класса [extends суперкласс] [implements интерфейс [, интерфейс.... ] ] {
// тело_класса
}
Если класс реализует более одного интерфейса, имена интерфейсов разделяются запятыми. Если класс реализует два интерфейса, которые объявляют один и тот же метод, то один и тот же метод будет использоваться клиентами любого интерфейса. Методы, которые реализуют интерфейс, должны быть объявлены как public. Кроме того, сигнатура типа реализующего метода должна в точности совпадать с сигнатурой типа, указанной в определении interface.
Рассморим небольшой пример класса, который реализует приведенный ранее интерфейс Callback.
class Client implements Callback {
// Реализует интерфейс Callback
public void callback(int p) {
System.out.println("Метод callback, вызванный со значением " + p) ;
}
}
Обратите внимание, что метод callback () объявлен с использованием спецификатора доступа public.
Помните! При реализации метода интерфейса он должен быть объявлен как public.
Вполне допустима и достаточно распространена ситуация, когда классы, которые реализуют интерфейсы, определяют собственные дополнительные члены. Например, следующая версия класса Client реализует метод callback() и добавляет метод nonlnfaceMeth():
class Client implements Callback {
// Реализует интерфейс Callback
public void callback(int p) {
System.out.println("Метод callback, вызванный со значением " + p) ;
void nonlfaceMeth() {
System.out.println("Классы, которые реализуют интерфейсы" +
"могут определять также и другие члены.");
}
}