Zum Inhalt springen
Lektion 11 von 26 14 Min. Mittel Zur Übung Mit Codebeispiel

Vererbung & Polymorphie

Vererbung teilt gemeinsames Verhalten: Eine Unterklasse erbt Felder und Methoden und ergänzt Eigenes.

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 eine Oberklasse und zwei Unterklassen mit eigener fahre()-Ausgabe gebaut.

Warum das wichtig ist: Vererbung hilft, wenn Dinge wirklich zusammengehören. Falsch eingesetzt wird sie schnell zur Falle.

Vorher hilfreich

Lerninhalt

Verstehen & anwenden

1

extends und super

extends macht eine Klasse zur Unterklasse einer anderen.

super(...) ruft den Konstruktor der Elternklasse auf und steht als erste Anweisung im Konstruktor.

extendssuper
Ableitung
public class Fahrzeug {
    protected int tempo;

    public void fahre() {
        System.out.println("Faehrt mit " + tempo);
    }
}

public class Auto extends Fahrzeug {
    public Auto() {
        this.tempo = 120;
    }
}
2

Überschreiben

@Override markiert eine Methode, die Verhalten der Elternklasse ersetzt.

Der Compiler prüft die Signatur.

Polymorphie: Eine Fahrzeug-Variable kann ein Auto halten — aufgerufen wird die Auto-Version der Methode.

@Overridepolymorphism
Override
public class Auto extends Fahrzeug {
    @Override
    public void fahre() {
        System.out.println("Auto fährt auf der Straße");
    }
}

Fahrzeug f = new Auto();
f.fahre(); // "Auto fährt auf der Straße"
3

Grenzen der Vererbung

Java erlaubt nur eine direkte Elternklasse.

Für mehrere Verträge gibt es Interfaces.

Tiefe Vererbungshierarchien werden schnell unübersichtlich — Komposition ist oft die bessere Wahl.

finalcomposition

Vertiefung

Vererbung ist eine enge Beziehung

Vererbung bedeutet „ist ein“: Ein Auto ist ein Fahrzeug. Wenn diese Beziehung nicht stimmt, ist Vererbung meist die falsche Wahl. Komposition („hat ein“) ist oft flexibler.

Polymorphie wirkt über den Referenztyp: Eine Fahrzeug-Variable kann ein Auto halten. Aufgerufen wird trotzdem die überschriebene Methode des konkreten Objekts.

Polymorpher Aufruf
Fahrzeug f = new Auto();
f.fahre(); // Auto-Version wird ausgeführt

List<Fahrzeug> flotte = List.of(new Auto(), new Fahrrad());
for (Fahrzeug fahrzeug : flotte) {
    fahrzeug.fahre();
}

Merksatz: Vererbung nur bei echter „ist ein“-Beziehung. Polymorphie macht Sammlungen unterschiedlicher Unterklassen gemeinsam nutzbar.

Übungsaufgabe

Fahrzeug-Flotte

Baue Fahrzeug als Oberklasse sowie Auto und Fahrrad als Unterklassen. Jede Klasse überschreibt fahre().

Das soll dein Programm können

  • Oberklasse Fahrzeug mit fahre()
  • Zwei Unterklassen mit @Override
  • Eine List<Fahrzeug> mit beiden Typen
  • Schleife, die für jedes Fahrzeug fahre() aufruft

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

Erweitere mit class Auto extends Fahrzeug. Für die Liste kannst du List.of(new Auto(), new Fahrrad()) verwenden.

Lösung anzeigen
Fahrzeug-Flotte.java
import java.util.List;

class Fahrzeug {
    public void fahre() { System.out.println("Ein Fahrzeug fährt."); }
}

class Auto extends Fahrzeug {
    @Override
    public void fahre() { System.out.println("Das Auto fährt auf der Straße."); }
}

class Fahrrad extends Fahrzeug {
    @Override
    public void fahre() { System.out.println("Das Fahrrad fährt auf dem Radweg."); }
}

public class Flotte {
    public static void main(String[] args) {
        List<Fahrzeug> flotte = List.of(new Auto(), new Fahrrad());
        for (Fahrzeug fahrzeug : flotte) {
            fahrzeug.fahre();
        }
    }
}

Warum funktioniert das?

Die Schleife kennt nur Fahrzeug. Trotzdem wird die passende Unterklassen-Version aufgerufen — das ist dynamische Bindung.

Aktiv-Check

Teste dein Verständnis

1/6

Erkennen: Welcher Abschnitt passt?

Welcher Abschnitt passt zu diesen Begriffen?

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

Spaßprojekt

Fahrzeug-Flotte

Baue Fahrzeug als Oberklasse sowie Auto und Fahrrad als Unterklassen. Speichere alle in einem Array und rufe bei jedem fahre() auf.

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