8.1 Das Konzept der Vererbung
8.1 Das Konzept der VererbungDie Ziele die mit Vererbung in der objektorientierten Programmierung verfolgt werden sind:
- Wiederverwendung
- eine Klasse vererbt Eigenschaften an eine andere.
- Dies bedeutet: Man nutzt Daten und Methoden einer Klasse
- Modellierung in Hierarchien
- Hierarchien sind gängige Konzepte des Alltagsleben und finden sich in der Begrifflichkeit des Alltagslebens wieder. Eine Modellierung die Hierarchien unterstützt und vereinfacht das Verständnis und die Kommunikation.
- Hierarchien sind Konzepte die stark bei der Abgrenzung zwischen ähnlichen Dingen helfen
Beispiel einer Vererbungshierarchie: |
Die gleiche Begriffshierarchie lässt sich auch als Mengendiagramm darstellen: |
Alle Mitglieder einer Teilmenge haben die gleichen Eigenschaften.
Das Mengendiagramm verdeutlicht, dass es sich bei der Vererbungshierarchie um eine "Ist-ein" Relation handelt.
Vererbung und Klassen
Die Konzepte der Vererbungshierarchien lässt sich leicht auf Klassen abbilden
Das Diagramm rechts verdeutlicht die Beziehungen zwischen den Klassen, ihrer Bedeutung und der Typisierung. |
Ein- und Mehrfachvererbung
Programmiersprachen wie C++ erlauben die Benutzung von Mehrfachvererbung. Die Sprache Java erlaubt jedoch nur eine einfache Vererbung.
- Einfachvererbung: Eine Unterklasse erbt von genau einer Oberklasse
- Mehrfachvererbung: Eine Unterklasse erbt von mehreren Oberklassen
Das Konzept der Mehrfachvererbung durchbricht zu einem gewissen Grad das Konzept der Spezialisierung-Generalisierung. Bei der Einfachvererbung sind Personen Mitarbeiter oder Berater aber nicht beides gleichzeitig. Bei der Mehrfachvererbung mit einer einzelnen Basisklasse werden Unterklassen zuerst als disjunkte Klassen definiert. Später sollen Unter-Unterklassen jedoch die gleichen Eigenschaften über verschieden Vererbungspfade erben.
Anmerkung
Mehrfachvererbung erhöht die Mächtigkeit sowie die Komplexität einer Sprache erheblich. Es kann hier leicht zu Effekten kommen die ein Entwickler nicht als intuitiv empfindet. Das Risiko des Fehlverhaltens einer Anwendung steigt hierdurch.
Beim Entwurf der Sprache Java wurde bewusst auf Mehrfachvererbung verzichtet um die Sprache einfach zu halten und um die Implementierung eines effizienten Laufzeitsystems zu vereinfachen.
Die Java Interface (Schnittstellen) Technologie bietet eine "Hintertür" zur Implementierung von Fällen in denen eine Mehrfachvererbung wünschenswert ist.
- 11472 views