Fachkonzept - Vererbung
Erweiterung von Klassen
Vererbung ist ein Konzept, mit dem man Klassenhierarchien erzeugen kann.
Vererbung beschreibt die Vorgehensweise, eine neue Klasse als Erweiterung einer bereits bestehenden Klasse (oder mehrerer bereits bestehender Klassen) zu entwickeln. Die neue Klasse wird auch Subklasse, die bestehende Klasse Basisklasse oder Superklasse genannt.
Das folgende Klassendiagramm zeigt eine Vererbungssituation, bei der die Subklasse Kartenstapel
eine
Erweiterung der Basisklasse Stapel
darstellt usw..
Übernehmen, ergänzen und überschreiben
Beim Vererben übernimmt die Subklasse die Attribute und Methoden der Basisklasse.
Eine übernommene Methode kann dabei überschrieben (d. h. neu definiert) werden.
Die Subklasse kann dann noch zusätzliche Attribute und Methoden ergänzen.
Folgende Fälle kommen im oben gezeigten Klassendiagramm vor:
Die Subklasse Kartenstapel
übernimmt z. B. das Attribut liste
und die Methode isEmpty()
der Basisklasse Stapel
.
Die Subklasse Kartenstapel
ergänzt die Methode mischen()
.
Die Subklasse Kartenstapel
überschreibt den Konstruktor.
Vererbung und Modularisierung
Eine Klasse, die als Subklasse aus anderen Klassen entsteht, ist kein autonomer Baustein mehr. Bei der Verwendung der Klasse kann es immer wieder zu Rückgriffen auf die Basisklasse(n) kommen.
Mit Vererbung schafft man Abhängigkeitsbeziehungen, die dem Modularisierungsgedanken nicht entsprechen. Man muss daher immer genau abwägen, ob man die Vorteile von Vererbung nutzen möchte (leichte Realisierbarkeit durch einen Rückgriff auf Gegebenes) oder ob man die Nachteile von Vererbung (keine Bausteine, die man autonom verwenden kann) vermeiden möchte.
Wir werden Vererbung im Folgenden bei der Entwicklung objektorientierter Modelle eher vermeiden.