Найти в Дзене
JavaDocs

Что такое интерфейс?

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

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

interface Bicycle {

void changeCadence(int newValue);

void changeGear(int newValue);

void speedUp(int increment);

void applyBrakes(int decrement);
}

Для реализации этого интерфейса имя вашего класса должно измениться (например, велосипед определенной марки - ACMEBicycle), и вы должны использовать implements ключевое слово в объявлении класса:

class ACMEBicycle implements Bicycle {

int cadence = 0;
int speed = 0;
int gear = 1;

// Необходимо, чтобы все методы интерфейса получили реализации методов
// в классе

public void changeCadence(int newValue) {
cadence = newValue;
}

public void changeGear(int newValue) {
gear = newValue;
}

public void speedUp(int increment) {
speed = speed + increment;
}

public void applyBrakes(int decrement) {
speed = speed - decrement;
}

public void printStates() {
System.out.println("cadence:" +
cadence + " speed:" +
speed + " gear:" + gear);
}
}

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

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