Zum Inhalt springen
Lektion 19 von 26 14 Min. Fortgeschritten Zur Übung Mit Codebeispiel

Abstrakt, Enum & Record

Abstrakte Klassen, Enums und Records ergänzen den OOP-Werkzeugkasten für sauberere Modelle.

Ansicht

01

Verstehen

Lies die Kernidee und das Beispiel.

02

Prüfen

Beantworte die Aktiv-Checks.

03

Anwenden

Setze die Transferaufgabe um.

Mini-Erfolg

Du hast einen Spielzustand als Enum und ein Ergebnis als Record modelliert.

Warum das wichtig ist: Diese Bausteine ersetzen magische Strings und halbfertige Klassen durch klare, typsichere Modelle.

Das darf schwer sein

Das ist ein Fortgeschrittenen-Thema. Lies es einmal in Ruhe, baue das Mini-Projekt und komm später zurück. Du musst es nicht sofort können.

Vorher hilfreich

Lerninhalt

Verstehen & anwenden

1

Abstrakte Klassen

abstract-Klassen können nicht direkt instanziert werden — sie sind Basis für Unterklassen.

Sie mischen fertige Methoden mit abstrakten, die Unterklassen ausfüllen müssen.

abstract
Abstrakte Basis
public abstract class Aufgabe {
    public abstract boolean prüfen(String eingabe);

    public void bewerten(String eingabe) {
        System.out.println(prüfen(eingabe) ? "Richtig!" : "Falsch");
    }
}
2

Enums

Ein enum definiert eine feste Menge benannter Werte — typsicher statt magischer Strings.

Enums funktionieren perfekt mit switch.

enum
Enum
public enum Schwierigkeit {
    LEICHT, MITTEL, SCHWER
}

Schwierigkeit stufe = Schwierigkeit.MITTEL;
3

Records

record erzeugt eine unveränderliche Datenklasse mit Konstruktor, Gettern, equals und toString — in einer Zeile.

Ideal für Werte-Objekte wie Ergebnisse oder Koordinaten.

record
Record
public record QuizErgebnis(String modul, int punkte, int gesamt) {}

var ergebnis = new QuizErgebnis("java", 8, 10);
ergebnis.punkte(); // 8

Vertiefung

Enum, Record und sealed

Enums sind mehr als Konstanten: Sie können Felder und Methoden haben. Records sind ideale Werteträger, weil equals, hashCode, toString und Getter automatisch entstehen.

Sealed Classes begrenzen, welche Klassen eine Oberklasse erweitern dürfen. Das macht Modelle geschlossen und switch-Prüfungen vollständig. Für den Einstieg reicht: Enum für Zustände, Record für Daten.

Enum mit Zustand und Record
enum Zustand { START, LAUFEND, GEWONNEN }

record Punktestand(String name, int punkte) {}

var stand = new Punktestand("Ada", 42);
System.out.println(stand.name() + ": " + stand.punkte());

Merksatz: Enum macht Zustände typsicher, Record macht Datenklassen kurz. Beides reduziert Boilerplate und magische Strings.

Übungsaufgabe

Spielzustand und Punktestand

Modelliere einen Spielzustand als Enum und einen Punktestand als Record. Gib beide aus und vergleiche zwei Records mit equals.

Das soll dein Programm können

  • Enum mit mindestens drei Zuständen
  • Record mit Name und Punkten
  • Zwei Records erzeugen
  • equals und Ausgabe demonstrieren

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

Ein Record deklariert seine Komponenten in der Kopfzeile: record Punktestand(String name, int punkte) {}. Zugriff über name() und punkte().

Lösung anzeigen
Spielzustand und Punktestand.java
public class Spiel {
    enum Zustand { START, LAUFEND, GEWONNEN }

    record Punktestand(String name, int punkte) {}

    public static void main(String[] args) {
        Zustand zustand = Zustand.LAUFEND;
        Punktestand a = new Punktestand("Ada", 42);
        Punktestand b = new Punktestand("Ada", 42);

        System.out.println(zustand);
        System.out.println(a.name() + ": " + a.punkte());
        System.out.println("Gleich: " + a.equals(b));
    }
}

Warum funktioniert das?

Records vergleichen ihre Komponenten wertebasiert. Deshalb ist a.equals(b) true, obwohl es zwei verschiedene Objekte sind.

Aktiv-Check

Teste dein Verständnis

1/6

Erkennen: Welcher Abschnitt passt?

Welcher Abschnitt passt zu diesen Begriffen?

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

Spaßprojekt

Spielzustand

Baue ein Enum Spielzustand (START, LAUFEND, GEWONNEN) und einen Record Punktestand(String name, int punkte).

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