Zum Inhalt springen
Lektion 12 von 26 12 Min. Mittel Zur Übung Mit Codebeispiel

Interfaces

Ein Interface ist ein Vertrag: Es legt fest, WAS eine Klasse können muss — nicht WIE sie es umsetzt.

Ansicht

01

Verstehen

Lies die Kernidee und das Beispiel.

02

Prüfen

Beantworte die Aktiv-Checks.

03

Anwenden

Setze die Transferaufgabe um.

Mini-Erfolg

Zwei verschiedene Klassen erfüllen dasselbe Interface und werden gleich behandelt.

Warum das wichtig ist: Interfaces sind überall in Java: List, Map, Comparable und in Spring. Sie machen Code austauschbar.

Vorher hilfreich

Lerninhalt

Verstehen & anwenden

1

Definieren und implementieren

Ein Interface deklariert Methodensignaturen ohne Rumpf.

implements verpflichtet eine Klasse, alle Methoden umzusetzen. Eine Klasse kann mehrere Interfaces implementieren.

interfaceimplements
Vertrag
public interface Speicherbar {
    void speichern();
}

public class Profil implements Speicherbar {
    @Override
    public void speichern() {
        System.out.println("Profil gespeichert");
    }
}
2

Gegen Schnittstellen programmieren

Variablen und Parameter sollten den Interface-Typ tragen: List statt ArrayList.

So lässt sich die Implementierung austauschen, ohne den restlichen Code anzufassen.

Listabstraction
Interface-Typ
List<String> namen = new ArrayList<>();
// später austauschbar:
// List<String> namen = new LinkedList<>();
3

default-Methoden

Interfaces dürfen Standard-Implementierungen mitliefern (default).

So lassen sich Interfaces erweitern, ohne alle Implementierungen zu brechen.

default

Vertiefung

Verträge statt Erbketten

Ein Interface beschreibt Fähigkeiten, die nicht in eine Vererbungshierarchie passen. Ein Konto und ein Warenkorb können beide „bezahlbar“ sein, ohne verwandt zu sein.

Code sollte gegen den Interface-Typ programmieren: List statt ArrayList, Bezahlbar statt Kreditkarte. Dadurch lässt sich die konkrete Implementierung austauschen.

Gegen das Interface programmieren
interface Bezahlbar {
    void bezahlen(int betrag);
}

void kassiere(Bezahlbar zahlung, int betrag) {
    zahlung.bezahlen(betrag);
}

kassiere(new Kartenzahlung(), 42);

Merksatz: Interfaces entkoppeln Code von konkreten Klassen. Sie sind der Grund, warum Java-APIs so austauschbar wirken.

Übungsaufgabe

Bezahlarten

Definiere ein Interface Bezahlbar mit bezahlen(int betrag). Implementiere Kartenzahlung und Barzahlung und rufe beide über den Interface-Typ auf.

Das soll dein Programm können

  • Interface mit einer Methode
  • Zwei Implementierungen mit @Override
  • Eine Methode, die Bezahlbar entgegennimmt
  • Beide Varianten aufrufen

Schreibe den Code hier oder in deiner IDE und vergleiche ihn dann mit der Lösung.

Dein Code wird automatisch auf diesem Gerät gespeichert.

Hinweis anzeigen

Die Methode kassiere(Bezahlbar zahlung, int betrag) muss nicht wissen, welche Klasse dahintersteckt.

Lösung anzeigen
Bezahlarten.java
interface Bezahlbar {
    void bezahlen(int betrag);
}

class Kartenzahlung implements Bezahlbar {
    @Override
    public void bezahlen(int betrag) {
        System.out.println("Karte: " + betrag + " EUR");
    }
}

class Barzahlung implements Bezahlbar {
    @Override
    public void bezahlen(int betrag) {
        System.out.println("Bar: " + betrag + " EUR");
    }
}

public class Kasse {
    public static void main(String[] args) {
        kassiere(new Kartenzahlung(), 42);
        kassiere(new Barzahlung(), 17);
    }

    static void kassiere(Bezahlbar zahlung, int betrag) {
        zahlung.bezahlen(betrag);
    }
}

Warum funktioniert das?

kassiere kennt nur den Vertrag. Neue Bezahlarten können ergänzt werden, ohne diese Methode zu ändern — das ist der eigentliche Gewinn.

Aktiv-Check

Teste dein Verständnis

1/6

Erkennen: Welcher Abschnitt passt?

Welcher Abschnitt passt zu diesen Begriffen?

interfaceimplements
Tipp: Erst erinnern, dann prüfen. Fehler sind Teil des Lernens.

Spaßprojekt

Bezahlen leicht gemacht

Definiere Bezahlbar mit bezahlen(). Baue Kartenzahlung und Barzahlung und rufe beide über den Interface-Typ auf.

Selbstcheck

Kann ich das schon?

Hake ab, was du wirklich erklären oder selbst bauen könntest.

0 von 3 geschafft

Fortschritt

Bereit zum Abschließen?

Markiere die Lektion als abgeschlossen, um XP und Streak zu erhalten.

</> Learn-Program © 2026 · Lizenziert unter CC BY-NC-SA 4.0

Rechtliches & Lizenz