🏗️ Lehrpfad 2: Objektorientierung & Kapselung

Java 05: Klassen, Objekte & Konstruktoren

Lerne die Grundlagen der Objektorientierung in Java: Instanzvariablen, Konstruktoren, Constructor Chaining mit this(...) und Objekterzeugung.

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

💡 1. Instanziierung & Konstruktor-Verkettung

Klassen sind Baupläne für Objekte im Heap. Konstruktoren initialisieren neue Instanzen:

public class BankKonto {
    private String kontonummer;
    private double saldo;

    // Hauptkonstruktor:
    public BankKonto(String kontonummer, double initialSaldo) {
        this.kontonummer = kontonummer;
        this.saldo = initialSaldo;
    }

    // Überladener Konstruktor mit Default-Saldo via this(...):
    public BankKonto(String kontonummer) {
        this(kontonummer, 0.0);
    }

    public void einzahlen(double betrag) {
        if (betrag <= 0) throw new IllegalArgumentException("Betrag muss > 0 sein");
        this.saldo += betrag;
    }
}
📐 Didaktische Analogie: Bauplan & Fertighaus

Die Klasse ist der Architektenplan auf Papier. Das Objekt ist das tatsächlich gebaute Haus aus Ziegeln im Speicher. Mit `new` wird der Bautrupp losgeschickt!

⚡ 2. Quick-Cheat-Sheet

KonstruktBedeutungRegel
thisReferenz auf das aktuelle ObjektDient zur Unterscheidung von Feld und Parameter
this(...)Konstruktor-WeiterleitungMuss zwingend in der ERSTEN Zeile stehen
Default-KonstruktorAutomatisch generiertEntfällt sobald eigener Konstruktor existiert
newSpeicherallokationErzeugt Objekt auf dem Heap

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

⚠️ Verlust des Default-Konstruktors

Sobald ein Konstruktor mit Parametern geschrieben wird, entfällt new Auto() ohne Parameter. Man muss ihn bei Bedarf explizit hinschreiben.

⚠️ Shadowing ohne this

Schreibt man name = name; statt this.name = name;, weist der Parameter sich selbst zu und das Instanzfeld bleibt uninitialisiert!

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