Vererbung
Vererbung ist ein mächtiges Konzept der objektorientierten Programmierung, das es ermöglicht, neue Klassen auf Basis bestehender Klassen zu erstellen. Die neue Klasse "erbt" Eigenschaften und Methoden der ursprünglichen Klasse.
Vergleich aus der Natur: Alle Säugetiere haben gemeinsame Eigenschaften (Warmblüter, haben Fell, säugen ihre Jungen). Hunde sind eine spezielle Art von Säugetieren und haben zusätzlich eigene Eigenschaften (bellen, wedeln mit dem Schwanz).
In der Programmierung können wir das genauso machen: Eine allgemeine Klasse Säugetier
und spezielle Klassen wie Hund
oder Katze
, die von Säugetier
erben.
Grundkonzept der Vererbung
Basisklasse und abgeleitete Klasse
- Basisklasse (auch Superklasse oder Elternklasse): Die ursprüngliche Klasse
- Abgeleitete Klasse (auch Unterklasse oder Kindklasse): Die Klasse, die erbt
Die Vererbungsbeziehung wird in Java mit dem Schlüsselwort extends
beschrieben.
classDiagram Person <|-- Mitarbeiter class Person { -name: String +setzeName(pName: String) +gibName(): String } class Mitarbeiter { -mitarbeiterNummer: int +getMitarbeiterNummer(): int }
Einfaches Vererbungsbeispiel
Die Basisklasse: Person
Wichtige Vererbungskonzepte
super - Zugriff auf die Basisklasse
Das Schlüsselwort super
ermöglicht den Zugriff auf Methoden und Konstruktoren der Basisklasse:
Zugriffsbereiche (Sichtbarkeit)
Zugriffsbereiche bei Vererbung:
private
: Nur in der eigenen Klasse sichtbarprotected
: In der eigenen Klasse UND in Unterklassen sichtbarpublic
: Überall sichtbar
Praktisches Beispiel: Formen
Übung: Vererbung verstehen
Gegeben sind die folgenden beiden Klassen. Beantworte die nachstehenden Fragen:
Fragen:
- Ist dieser Code gültig?
meinAuto.geschwindigkeit = 50;
Ja! Das Attribut geschwindigkeit
ist public
und wird vererbt.
- Ist dieser Code gültig?
meinAuto.marke = "Audi";
Nein! Das Attribut marke
ist protected
und kann nicht von außen zugegriffen werden.
- Ist dieser Code gültig?
meinAuto.hatKofferraum = false;
Nein! Das Attribut hatKofferraum
ist private
und nicht von außen sichtbar.
Teste-Dich-Projekt: Mitarbeiter-Hierarchie
Erstelle ein Mitarbeiter-Verwaltungssystem mit Vererbung:
-
Basisklasse
Mitarbeiter
:- Attribute: name, gehalt, mitarbeiterID
- Methoden: arbeiten(), gehaltserhöhung(betrag)
-
Unterklasse
Entwickler extends Mitarbeiter
:- Zusätzliches Attribut: programmiersprache
- Überschriebene Methode: arbeiten() (spezifischer für Entwickler)
- Neue Methode: neueSpracheLernen(sprache)
-
Unterklasse
Manager extends Mitarbeiter
:- Zusätzliches Attribut: teamGroesse
- Überschriebene Methode: arbeiten() (spezifischer für Manager)
- Neue Methode: teamMeeting()
Testfälle
- Entwickler kann arbeiten, neue Sprachen lernen und Gehaltserhöhung bekommen
- Manager kann arbeiten, Team-Meetings leiten und Gehaltserhöhung bekommen
- Alle Methoden der Basisklasse funktionieren bei beiden Unterklassen
Expertenbereich
Erweiterte Aufgaben:
- Erstelle eine Klassenhierarchie für verschiedene Tiere (Säugetiere, Vögel, Fische)
- Implementiere ein Spiel mit verschiedenen Charakter-Klassen (Krieger, Magier, Bogenschütze)
- Entwerfe ein Fahrzeug-System mit Auto, Motorrad, LKW als Unterklassen
onlineide{url="https://nrw.onlineide.openpatch.org"}
// Hier kannst du die erweiterten Aufgaben bearbeiten
:::
:::
Wichtige Vererbungsregeln:
- Eine Klasse kann nur von einer anderen Klasse erben (Einfachvererbung)
- Alle Klassen erben automatisch von der Klasse
Object
- Private Attribute werden nicht vererbt (nicht sichtbar in Unterklassen)
- Konstruktoren werden nicht vererbt, aber können mit
super()
aufgerufen werden