05.08.2013 Aufrufe

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

Cornelia Heinisch, Frank Müller-Hofmann, Joachim Goll ... - HSR-Wiki

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Vererbung und Polymorphie 385<br />

det. Dies hat zur Konsequenz, dass ein Objekt einer abgeleiteten Klasse in der Gestalt<br />

eines Objektes einer Basisklasse auftritt und sich damit vielgestaltig oder polymorph<br />

verhält.<br />

11.4.1 Polymorphes Verhalten bei der Erweiterung<br />

Bei der Erweiterung von Basisklassen in Sohnklassen ist ein polymorphes Verhalten<br />

von Objekten der Sohnklasse problemlos möglich, da ein Objekt einer abgeleiteten<br />

Klasse alle Methoden und Datenfelder einer Basisklasse erbt, wie in Bild 11-20 zu<br />

sehen ist, und sie im Falle der Erweiterung nur um zusätzliche Datenfelder und<br />

Methoden ergänzt.<br />

Ein Objekt einer Unterklasse kann auch Methodenaufrufe beantworten, die in der<br />

Basisklasse implementiert sind. Natürlich kann ein Objekt einer abgeleiteten Klasse<br />

zusätzliche Datenfelder oder Methoden besitzen. Aber an der Stelle im Programmcode,<br />

an der ein Objekt einer Basisklasse stehen kann, kann auch ein Objekt einer<br />

abgeleiteten Klasse die Aufgaben erfüllen. Es verhält sich an dieser Stelle als Objekt<br />

der Basisklasse. Die weiteren Eigenschaften des Objektes der abgeleiteten Klasse<br />

wie zusätzliche Datenfelder oder Methoden werden dann ausgeblendet bzw. sind<br />

über die Referenzvariable vom Typ einer Basisklasse nicht sichtbar. Dies bedeutet,<br />

dass ein Objekt einer abgeleiteten Klasse in verschiedenen Gestalten auftreten<br />

kann.<br />

Großvater<br />

wert1<br />

methode1()<br />

wert2<br />

Vater<br />

methode2()<br />

wert3<br />

Sohn<br />

methode3()<br />

:Großvater<br />

wert1<br />

methode1()<br />

wert1<br />

wert2<br />

:Vater<br />

methode1()<br />

methode2()<br />

wert1<br />

wert2<br />

wert3<br />

:Sohn<br />

methode1()<br />

methode2()<br />

methode3()<br />

Bild 11-20 Ein Sohn-Objekt kann sich auch als Vater- bzw. als Großvater-Objekt verhalten,<br />

ein Vater-Objekt kann sich auch als Großvater-Objekt verhalten<br />

Diese Polymorphie ist der Grund für die wunderbare Möglichkeit, dass sich ganze<br />

Klassenbibliotheken problemlos wiederverwenden lassen. Polymorphie von Objekten<br />

erlaubt es, einen wiederverwendbaren Code zu schreiben, der nur Referenzen

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!