Der Ausdruck polymorph stammt aus dem Griechischen und bedeutet so viel wie vielgestaltig.
Wird in Java im Quellcode der 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();