🏗️ Lehrpfad 2: Objektorientierung & Kapselung

Java 08: Interfaces, Default Methods & Kopplung

Entkopple Systeme mit Schnittstellen (interface), nutze Mehrfachimplementierung und erweitere APIs elegant mit default-Methoden.

📂 Dateien dieser Lerneinheit:
📄 Aufgabe.java (Startercode) 🧪 TestAufgabe.java (Tests) 💡 Musterloesung.java (Lösung) 📖 README.md

💡 1. Interfaces als Verträge

Interfaces definieren, WAS ein Objekt leisten kann, nicht WIE. Sie ermöglichen lose Kopplung und Dependency Inversion:

public interface Zahlungsmethode {
    // Öffentliche abstrakte Methode:
    boolean fuehreZahlungAus(double betrag);

    // Default-Methode (ab Java 8 mit Standardimplementierung):
    default void sendeBestaetigung(String empfaenger) {
        System.out.println("Zahlungsbeleg an " + empfaenger + " gesendet.");
    }
}

public class Kreditkarte implements Zahlungsmethode {
    @Override
    public boolean fuehreZahlungAus(double betrag) {
        System.out.println("Kreditkartenzahlung über " + betrag + "€ gebucht.");
        return true;
    }
}
🔌 Didaktische Analogie: Die Steckdose

Die Steckdose an der Wand ist ein Interface. Sie spezifiziert nur 230V und zwei Pins. Ob du einen Föhn, Laptop oder Kühlschrank einsteckst, ist der Steckdose völlig egal!

⚡ 2. Quick-Cheat-Sheet

AspektAbstrakte KlasseInterface
VererbungEinfachvererbung (`extends`)Mehrfachimplementierung (`implements A, B`)
ZustandKann Instanzvariablen haltenNur `public static final` Konstanten
KonstruktorenJa, besitzt KonstruktorenNein, keine Konstruktoren möglich
HauptzweckGemeinsame Code-Basis ('Ist-ein')Gemeinsames Verhalten & Rollen ('Kann-ein')

⚠️ 3. Häufige Stolperfallen (Gotchas & Anti-Patterns)

⚠️ Diamantproblem bei Default-Methoden

Implementiert eine Klasse zwei Interfaces mit identischer Default-Methode, verlangt der Compiler zwingend eine eigene Überschreibung via InterfaceA.super.methode().

⚠️ Instanzfelder im Interface vortäuschen

Variablen im Interface sind implizit public static final (Konstanten), keine modifizierbaren Objektzustände!

🧠 4. Diagnostischer Selbst-Check

Überprüfe dein Verständnis von Sprach-Features, Speicherverwaltung und Enterprise-Architektur, bevor du den Code in der Web-IDE schreibst.

🎯 5. Aufgaben & Checkliste in Aufgabe.java

💻 In Web-IDE öffnen & lösen →