🏗️ Lehrpfad 2: Objektorientierung & Kapselung

Java 07: Vererbung, Polymorphie & Abstract Classes

Nutze Klassenhierarchien mit extends, rufe Elternkonstruktoren mit super() auf und meistere dynamischen Methoden-Dispatch.

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

💡 1. Vererbung & Abstrakte Basisklassen

Abstrakte Klassen definieren gemeinsame Grundstrukturen, können aber nicht direkt instanziiert werden. Unterklassen überschreiben Methoden mit `@Override`:

public abstract class Konto {
    protected String iban;
    protected double saldo;

    public Konto(String iban, double saldo) {
        this.iban = iban;
        this.saldo = saldo;
    }

    // Abstrakte Methode (muss von Unterklasse implementiert werden):
    public abstract double berechneZinsen();

    public void buchen(double betrag) {
        this.saldo += betrag;
    }
}

public class Sparkonto extends Konto {
    private double zinssatz;

    public Sparkonto(String iban, double saldo, double zinssatz) {
        super(iban, saldo); // Aufruf Elternkonstruktor
        this.zinssatz = zinssatz;
    }

    @Override
    public double berechneZinsen() {
        return this.saldo * (this.zinssatz / 100.0);
    }
}
🧬 Didaktische Analogie: Vererbung von Genen

Ein Kind erbt grundlegende Merkmale der Eltern (Blutgruppe, Augenfarbe), entwickelt aber eigene Talente. In Java erbt die Unterklasse Felder und Methoden und spezialisiert sie.

⚡ 2. Quick-Cheat-Sheet

SchlüsselwortWirkung auf KlassenWirkung auf Methoden
abstractKann nicht instanziiert werdenHat keinen Rumpf, MUSS überschrieben werden
finalDarf nicht beerbt werdenDarf nicht überschrieben werden
superRuft Elternkonstruktor aufRuft Elternmethode auf (super.buchen())
@OverrideCompiler-PrüfannotationStellt sicher, dass echte Elternmethode existiert

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

⚠️ Fehlendes super() im Konstruktor

Hat die Elternklasse keinen parameterlosen Konstruktor, MUSS die Unterklasse in Zeile 1 explizit super(args) aufrufen!

⚠️ Tippfehler bei Methodennamen ohne @Override

Schreibt man tostring() statt toString() ohne @Override, überschreibt man nichts und sucht stundenlang den Bug!

🧠 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 →