Interfejs w Javie opisuje zestaw metod, które klasa ma zaimplementować. Można go traktować jako kontrakt: jeśli klasa implementuje interfejs, musi dostarczyć ciała wymaganych metod.
Podstawowa składnia
interface IMyInterface {
void mth1();
int mth2();
}
W podstawowej postaci metody w interfejsie nie mają ciała, czyli kończą się średnikiem. Są one domyślnie public abstract, nawet jeśli tych słów nie zapisano jawnie.
Implementacja interfejsu
class MyClass implements IMyInterface {
public void mth1() {
System.out.println("mth1");
}
public int mth2() {
return 0;
}
}
Metody implementujące interfejs muszą być public, ponieważ nie można zmniejszyć widoczności metody zadeklarowanej w interfejsie.
Czego nie wolno w klasycznym interfejsie?
- Nie definiuje się konstruktora interfejsu.
- Nie stosuje się składni
private:— to zapis kojarzony z C++, nie z Javą. - Nie deklaruje się zwykłych pól obiektu, np.
private int a;. - Metoda z ciałem nie może być zapisana jako zwykła metoda bez dodatkowego modyfikatora.
Pola w interfejsie są domyślnie public static final, czyli są stałymi:
interface Config {
int MAX = 10;
}
Uwaga o nowszych wersjach Javy
Od Javy 8 interfejs może mieć metody default i static, a od Javy 9 także prywatne metody pomocnicze. W pytaniach egzaminacyjnych zwykle chodzi jednak o klasyczną definicję interfejsu: same nagłówki metod bez ciał.