Polymorphie

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();
  1. auf die Variable beispiel wird zugegriffen.
  2. das in der Variable gespeicherte Objekt und seine Klasse wird gefunden.
  3. besitzt diese Klasse die Methode anzeigen, so wird diese ausgeführt. Ansonsten…
  4. wird in der Superklasse nach der Methode anzeigen gesucht und, falls vorhanden, ausgeführt. Ansonsten…
  5. gibt es dort auch keine passende Methode, so wird die komplette Vererbungshierarchie nach oben verfolgt und die erste gefundene Methode verwendet.