====== Polymorphie ====== Der Ausdruck polymorph stammt aus dem Griechischen und bedeutet so viel wie //vielgestaltig//. Wird in Java im Quellcode der [[..:typ:start|Typ]] einer Variable gesetzt, sei es bei der Deklaration einer Variable oder bei einem Parameter, so spricht man vom **statischen Typ**. Zur Laufzeit kann die Variable aber auch auf ein Objekt einer Subklasse verweisen. Der Typ dieses Objekts nennt man den **dynamischen Typ**. Beim Compilieren des Java-Codes ist stets der statische Typ entscheidend, während der Laufzeit jedoch der dynamische Typ. Der Unterschied dieser beiden Typen zeigt sich bei dem folgenden Methodenaufruf: beispiel.anzeigen(); - auf die Variable //beispiel// wird zugegriffen. - das in der Variable gespeicherte Objekt und seine Klasse wird gefunden. - besitzt diese Klasse die Methode //anzeigen//, so wird diese ausgeführt. Ansonsten... - wird in der Superklasse nach der Methode //anzeigen// gesucht und, falls vorhanden, ausgeführt. Ansonsten... - gibt es dort auch keine passende Methode, so wird die komplette Vererbungshierarchie nach oben verfolgt und die erste gefundene Methode verwendet.