Ein Beispiel (4/4)

Das einzige der drei Grundkonzepte, das wir noch nicht genutzt haben, ist das des Polymorphismus. Doch auch dieses Konzept kann hier Verwendung finden, und zwar bei den Methoden verschiebe und drehe. Was sollen diese Methoden machen? Sie sollen das entsprechende Objekt zuerst löschen, dann die Position bzw. Richtung des Objektes ändern und es dann wieder neu zeichnen. Dazu ist es zweckmäßig, die Methoden zeichne und lösche der Objekte zu nutzen.

Doch wenn man mit dem herkömmlichen Konzept der statischen Bindung in der Klasse Graphikobjekt die Methode verschiebe einführt, wird der Compiler eine Methode bauen, die ein abstraktes Graphikobjekt löscht und später wieder zeichnet. Dies kann aber nicht sinnvoll sein, da dies ja kein sichtbares Objekt sein soll.

Man könnte zwar stattdessen einfach einen Punkt zeichnen und löschen, aber dies würde dann auch in den Klassen Rechteck und Kreis passieren: es würde ein Punkt gelöscht und später gezeichnet. Dieses Problem kann man dadurch umgehen, daß man den Compiler anweist, die Methoden zeichne und lösche dynamisch zu binden. Dann werden nicht mehr die Methoden benutzt, die zur Compilezeit gültig sind (d.h. die von Graphikobjekt), sondern die der zur Laufzeit jeweils gültigen Klasse. Wenn dann die Methoden zeichne und lösche von den abgeleiteten Klassen überschrieben werden, ändert sich die Funktionalität der Methode verschiebe gleich mit.

Weitere Vorteile ergeben sich bei der Nutzung von Listen, dazu mehr im Kapitel 'Vererbung & Polymorphismus'.