Interfejs w Javie

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

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ł.