Lektion 76:VererbungWie bereits erwähnt, können Klassen von anderen Klassen erben. So würde zum Beispiel die Klasse Singvogel von der Klasse Vogel erben. Dabei ist Vogel die Basisklasse (Oberklasse) und Singvogel die abgeleitete Klasse (Unterklasse).
Dabei bedeutet
daß die Klasse Singvogel von der Klasse Vogel erbt. Das heißt: "Ein Singvogel ist ein Vogel". "class Base:public Derived" bedeutet: "Ein Base ist ein Derived". Überall, wo ein Objekt der Klasse Vogel verwendet wird, da kann auch ein Objekt der Klasse Singvogel verwendet werden, denn ein Singvogel ist ein Vogel. Wenn Klassen von anderen Klassen erben, dann ist es auch möglich, Methoden zu aufzurufen, die bereits in der Basisklasse definiert wurden.
Für den Singvogel braucht man keine neue fliege-Methode anzubieten. Die Methode aus der Basisklasse erledigt den Auftrag korrekt. Der Compiler versucht immer, die Methode zu verwenden, die zur entsprechenden Klasse gehört. Falls die Klasse die Methode nicht anbietet (wie bei Singvogel), dann wird die Methode in der Basisklasse gesucht. Diese Vererbungsbeziehungen sind das, was in der normalen Welt die Begriffsbeziehungen sind. "Singvogel" ist ein Unterbegriff von "Vogel". Daher sollte auch die Klasse Singvogel von der Klasse Vogel erben. Ein Singvogel kann alles, was ein Vogel auch kann. Vögel können fliegen, also können Singvogels auch fliegen. Will man beschreiben, was ein Singvogel ist, dann sagt man: "Ein Singvogel ist ein Vogel, der zusätzlich singen kann". Von der Klasse Singvogel können auch weitere Klassen erben.
Doch was passiert mit einem Pinguin? Auch dafür gibt es eine Lösung. Es kann nicht mehr gesagt werden, daß ein Pinguin nicht fliegen könne, denn durch das Einfügen der fliege-Methode in die Klasse Vogel wurde festgelegt, daß alle Vögel fliegen können. Mit der Wirklichkeit muß das nicht viel zu tun haben, wichtig ist nur, daß das Modell für angemessen ist. Eine mögliche Lösung wäre
ÜbungSchlagen Sie eine Lösung vor, die das Flugverhalten von Amseln, Sperlingen und Pinguinen besser modelliert. Der Compiler soll
erlauben, aber
mit einer Fehlermeldung quittieren. Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |