Buffl

Polymorphie

MV
by Melina V.

Was bedeutet Polymorphie?

  • Vielgestaltigkeit

  • Konzept der Ojektorientierung, mit zwei konkrete Ausprägungen:

  1. Variablen können unterschiedliche Datentypen annehmen. Überall wo eine Basisklasse oder ein Interface erwartet wird (Variablen, Parameter usw.), kann auch eine Subklasse bzw. eine implementierende Klasse verwendet werden.

  2. Bei Methoden wird erst zur Laufzeit entschieden, an welchem Datentyp diese aufgerufen werden (dynamisches Binden). Da der konkrete Datentyp zur Laufzeit vom deklarierten Datentyp abweichen kann, ruft die Laufzeitumgebung dynamisch die Methode des konkreten Datentyps auf. Wenn eine mehrstufige Vererbungshierarchie vorliegt, wird die Methode aufgerufen, die in der Hierarchie am weitesten unten liegt.

  • Beispiel 1: Das Interface Waschbar definiert die Methode wasche(). Die Klasse Reinigung definiert die Methode reinige(Waschbar zuWaschendesObjekt), die die Methode wasche() aufruft. Die Klassen Auto und Hund implementieren Waschbar und können nun beide von der Reinigung gewaschen werden.

  • Beispiel 2: Die Klasse Tier definiert die Methode gibLaut(). Die Klassen Hund und Katze erben von Tier und implementieren gibLaut() (einmal als „Wuff“ und einmal als „Miau“). Die Klasse Labrador erbt von Hund und implementiert gibLaut() nicht erneut. Wenn nun ein Herrchen seinem Tier sagt, es soll Laut geben, dann wird das Tier – je nachdem um welches konkrete Tier es sich handelt – entweder „Wuff“ oder „Miau“ sagen. Ein Labrador wird „Wuff“ sagen, da er die Methode von Hund erbt.


Author

Melina V.

Information

Last changed