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

Kapselung & Konstruktoren

Gute Objekte lassen keine unmöglichen Zustände zu. Ein Konstruktor ist der Türsteher, private schützt die Daten, und Validierung verhindert Unsinn.

Ansicht

01

Verstehen

Lies die Kernidee und das Beispiel.

02

Prüfen

Beantworte die Aktiv-Checks.

03

Anwenden

Setze die Transferaufgabe um.

Mini-Erfolg

Dein Konto lässt kein negatives Guthaben zu und meldet den Versuch verständlich.

Warum das wichtig ist: Gute Objekte lassen keine unmöglichen Zustände zu. Das verhindert viele Fehler, bevor sie entstehen.

Vorher hilfreich

Lerninhalt

Verstehen & anwenden

1

Der Konstruktor als Türsteher

Ein Konstruktor trägt den Klassennamen und wird bei new ausgeführt.

Er sorgt dafür, dass ein Objekt von Anfang an gültig ist.

this unterscheidet Felder von Parametern mit demselben Namen.

constructorthisnew
Konstruktor
public class Konto {
    private int stand;

    public Konto(int startStand) {
        if (startStand < 0) {
            throw new IllegalArgumentException("Start darf nicht negativ sein");
        }
        this.stand = startStand;
    }
}
2

private, Getter und Setter

private macht ein Feld von außen unsichtbar.

Andere Klassen müssen über Methoden zugreifen.

Getter lesen den Wert, Setter ändern ihn — und können dabei Regeln prüfen. Nicht jedes Feld braucht einen Setter.

privategettersetter
Kontrollierter Zugriff
public int getStand() {
    return stand;
}

public void abheben(int betrag) {
    if (betrag <= 0 || betrag > stand) {
        throw new IllegalArgumentException("Betrag ungültig");
    }
    stand -= betrag;
}
3

final, static und gute Grenzen

final bedeutet: Die Referenz wird nur einmal gesetzt.

Bei Objekten kann sich der Inhalt trotzdem ändern.

static gehört zur Klasse, nicht zum einzelnen Objekt. Konstanten wie MAX_PUNKTE sind typische static-final-Felder.

finalstaticKonstante
Konstante
public class Quiz {
    public static final int MAX_PUNKTE = 100;
    private final String titel;

    public Quiz(String titel) {
        this.titel = titel;
    }
}

Vertiefung

Invarianten schützen

Kapselung bedeutet nicht nur private Felder, sondern dass ein Objekt seinen Zustand selbst schützt. Ein Konto darf zum Beispiel nie negativ werden, egal wer welche Methode aufruft.

Ein guter Konstruktor prüft seine Eingaben. Setter sind nicht automatisch Pflicht — oft ist eine fachliche Methode wie einzahlen() besser als ein generisches setGuthaben().

Einzahlen statt setzen
public void einzahlen(int betrag) {
    if (betrag <= 0) {
        throw new IllegalArgumentException("Betrag muss positiv sein");
    }
    stand += betrag;
}

Merksatz: Kapselung schützt Regeln, nicht nur Felder. Methoden benennen die erlaubten Aktionen fachlich.

Übungsaufgabe

Sicheres Konto

Baue ein Konto mit privatem Guthaben. Einzahlen und Abheben sollen den Stand verändern, aber nie negativ werden lassen.

Das soll dein Programm können

  • private int stand
  • Konstruktor mit Startguthaben >= 0
  • einzahlen und abheben mit Validierung
  • getStand() und eine Ausgabe der Aktionen

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

Wirf bei ungültigen Werten IllegalArgumentException. Prüfe beim Abheben, ob der Betrag größer als der Stand ist.

Lösung anzeigen
Sicheres Konto.java
public class Konto {
    private int stand;

    public Konto(int start) {
        if (start < 0) throw new IllegalArgumentException("Start negativ");
        stand = start;
    }

    public void einzahlen(int betrag) {
        if (betrag <= 0) throw new IllegalArgumentException("Betrag positiv");
        stand += betrag;
    }

    public void abheben(int betrag) {
        if (betrag <= 0 || betrag > stand) {
            throw new IllegalArgumentException("Abhebung ungültig");
        }
        stand -= betrag;
    }

    public int getStand() { return stand; }

    public static void main(String[] args) {
        Konto konto = new Konto(100);
        konto.einzahlen(50);
        konto.abheben(30);
        System.out.println(konto.getStand()); // 120
    }
}

Warum funktioniert das?

Der Konstruktor und die Methoden prüfen an den Grenzen. Danach kann sich der Rest des Programms darauf verlassen, dass ein Konto nie negativ ist.

Aktiv-Check

Teste dein Verständnis

1/6

Erkennen: Welcher Abschnitt passt?

Welcher Abschnitt passt zu diesen Begriffen?

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

Spaßprojekt

Sicheres Konto

Baue ein Konto mit privatem Guthaben, Einzahlen und Abheben. Ein negativer Kontostand darf nicht entstehen.

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