Twitter und Facebook-Anbindung
X
Tweet Follow @twitterapi
!!! Anbindung an twitter und facebook öffnen !!!

Wenn Ihnen mein Online-Buch gefällt,
dann bedanken Sie sich doch mit einer kleinen Spende...

20.2 Was ist Polymorphismus

20.2 Was ist Polymorphismus

Wie bereits erwähnt, ist der Polymorphismus einer der genialsten Vorteile, welcher sich aus einer Vererbung ergibt. Gemeint ist, dass ein Objekt die Form seiner Basisklasse und oder deren Basisklasse annehmen kann. Diese Verwandlung ist auch umkehrbar. Man kann zum Beispiel sagen, dass ein Ferrari ein Auto ist und das ein Auto ein Fahrzeug ist. Genauso kann man sagen, dass ein Ferrari ein Fahrzeug ist. Somit kann ich aus einem Ferrari ein Auto machen. In Folge stehen mir dann auch nur die Attribute und Methoden zur Verfügung, welche ein Auto hat. Später kann ich dann aus diesem Auto wieder ein Ferrari machen. Letzter Schritt funktioniert aber nur, wenn es wirklich mal ein Mercedes war.

Die Umwandlung von Ferrari nach Auto nennt man einen "impliziten Upcast". Implizit, weil man bei der Umwandlung keine Castfunktion aufrufen braucht. Upcast meint, dass ich mich in der Vererbungshierarchie noch oben bewege. Hier mal ein Beispiel.

 1
 2
 3
					
CFerrari	oF40(...);
CAuto		oAllgemeinesAuto	= oF40;	// keine händische Typumwandlung
CFahrzeug	oAllgemeinesFehrzeug	= oF40;	// keine händische Typumwandlung
					

Die Rückverwandlung von einem Auto in ein Ferrari nennt man "expliziten Downcast". Mit explizit ist gemeint, dass man hier sehr wohl eine Typumwandlung vornehmen muss. Dem Compiler ist zwar bekannt, dass ein Ferrari ein Auto ist, aber umgekehrt kann man nicht zwangsläufig sagen, dass ein Auto ein Ferrari ist. Es könnte ja auch ein Opel sein. Downcast mein, dass man sich in der Vererbungshierarchie nach unten bewegt. Ich erweitere eben gezeigtes Beispiel, um dies zu verdeutlichen.

 4
 5
					
oF40	= static_cast<CFerrari>oAllgemeinesAuto;	// Typumwandlung nötig
oF40	= static_cast<CFerrari>oAllgemeinesFehrzeug;	// Typumwandlung nötig
					

Sie fragen sich jetzt bestimmt, was man mit diesem Mechanismus anstellen kann. Die Antwort auf diese Frage folgt im nächsten Unterkapitel.

Zum Seitenanfang
Zum Inhaltsverzeichnis

© Copyright by Thomas Weiß, 2009 - 2012