Polymorphie ist eines der zentralen Konzepte in der objektorientierten Programmierung. Auf Deutsch übersetzt bedeutet der Begriff Vielgestaltigkeit. Gemeint ist, dass ein Objekt bei Aufruf unterschiedliche Formen abhängig von der jeweiligen Verwendung annehmen kann.
Polymorphie ist ein wichtiges Hilfsmittel, um komplexen Code zu vereinfachen. Man unterscheidet zwischen statischer Polymorphie und dynamischer Polymorphie. Je nach Programmiersprache kann die Umsetzung von Polymorphie etwas unterschiedlich ausfallen.
Statische Polymorphie
Unter statischer Polymorphie versteht man das Überladen von Methoden und Operatoren. Eine Klasse kann mehrere Funktionen mit gleichem Namen enthalten, die sich jedoch anhand ihrer Parameter unterscheiden. Eine Rechenfunktion könnte z. B. in zwei Varianten vorliegen.
Die erste Variante nimmt Parameter vom Typ int an und die zweite Variante akzeptiert Parameter vom Typ double. Je nachdem, ob der Methodenaufruf später im Code dann mit int oder double als Typ der Übergabeparameter erfolgt, wird automatisch die passende Funktion zugeordnet.
Man spricht von statischer Polymorphie, weil die auszuführende Methode zum Zeitpunkt des Kompilierens festgelegt wird. Anhand des Typs eines Objekts wird schon beim Kompilieren entschieden, welche überladene Methode gewählt werden muss. Statische Polymorphie kann dafür sorgen, dass Anwendungen zur Laufzeit performanter sind und Fehler früher auffallen.
Dynamische Polymorphie
Für dynamische Polymorphie wird mit abgeleiteten Klassen und virtuellen Methoden gearbeitet. Eine virtuelle Methode ist eine vererbbare und überschreibbare Methode. Es wird zunächst eine Basisklasse mit Funktionen definiert, von der beliebig viele Klassen abgeleitet werden können. Je nach Programmiersprache muss die Basisklasse hiefür möglicherweise noch als "virtual" gekennzeichnet werden. Die Ableitungen erben die Eigenschaften der Basisklasse, können aber die Implementierung von Methoden überschreiben, z. B. um die Funktion zu erweitern oder für den jeweiligen Anwendungszweck zu verändern. Ein Objekt der Basisklasse kann sich mithilfe einer virtuellen Methode wie ein Objekt der abgeleiteten Klasse verhalten.
Dynamische Polymorphie erhält ihren Namen daher, dass die Auswahl der Methoden nicht zum Zeitpunkt des Kompilierens, sondern zur Laufzeit erfolgt. Es wird also auf dynamische Weise bestimmt, welche Methode ausgeführt werden soll. Das ist z. B. dann wertvoll, wenn bestimmte Entscheidungen erst zur Laufzeit getroffen werden können. Zudem lässt sich dynamische Polymorphie flexibler nutzen als statische Polymorphie.
Welche Vorteile hat Polymorphie?
Polymorphie bietet Vorteile in den Bereichen Wiederverwendbarkeit, Übersichtlichkeit und Wartbarkeit. Sie alle tragen dazu bei, dass Code weniger komplex wird und somit auch langfristig einfacher nachvollziehbar bleibt.
Wiederverwendbarkeit
Polymorphie ermöglicht das Schreiben von Code, der für verschiedene Objekttypen verwendet werden kann. Wenn Code für mehrere Szenarien genutzt werden kann, muss dieser nicht für jeden neuen Fall dupliziert werden. Redundanzen können minimiert und die Länge des Codes optimiert werden.
Übersichtlichkeit
Polymorphie hilft dabei, Code übersichtlicher zu machen. In der gesamten Anwendung verteilte Duplikate werden durch abgeleitete Klassen vermieden und der Code wird vereinfacht. Der Quelltext wird besser nachvollziehbar und übersichtlicher, was vor allem in großen Projekten wertvoll ist.
Wartbarkeit
In der Regel müssen Projekte auch lange nach der ersten Entwicklung wartbar bleiben, damit Fehler behoben und Änderungen vorgenommen werden können. Polymorphie trägt zu einer gut nachvollziehbaren Struktur mit zentralen Anlaufstellen bei. Somit wird es einfacher, die passenden Stellen für eine Codeänderung zu identifizieren. Im Idealfall müssen Änderungen nur an einer einzigen Stelle vorgenommen werden, um im gesamten Projekt Gültigkeit zu haben.
Weitere Vorteile:
gute Erweiterbarkeit durch geringe Kopplung
hohe Flexibilität
hoher Abstraktionsgrad, z. B. bei der Implementierung von Schnittstellen
Welche Nachteile hat Polymorphie?
Polymorphie kann auch Nachteile wie Leistungseinbußen oder zu hohe Komplexität haben.
Leistungseinbußen
Speziell die dynamische Polymorphie kann sich negativ auf die Leistung einer Anwendung auswirken, weil hier zur Laufzeit die Auswahl von Methoden stattfindet. Schlimmstenfalls kann das zu deutlich spürbaren Leistungseinbußen führen. Das kann dem Benutzer das Gefühl einer schwerfälligen Anwendung geben oder im Fall von hochperformanten Systemen zum Flaschenhals werden. In den meisten Fällen sind die Leistungseinbußen durch dynamische Polymorphie jedoch kaum spürbar und können vernachlässigt werden.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Hohe Komplexität
Quellcode kann unter Umständen schwieriger zu verstehen sein, wenn Polymorphie genutzt wird. Entwickler müssen immer erst nachvollziehen, welche Methode in welchem Fall aufgerufen wird. Das könnte vor allem dann zum Problem werden, wenn sich ein Entwickler mit einem Stück Code befassen muss, dass er noch nicht gut kennt. Auch unerfahrene Programmierer könnten von Polymorphie verunsichert sein oder diese aus Unwissenheit falsch anwenden, sodass Laufzeitfehler oder schwer nachvollziehbarer Code entsteht.
Fazit
Polymorphie ist ein leistungsfähiges und weitverbreitetes Prinzip, das in fast allen gängigen Programmiersprachen genutzt werden kann. Methoden können abhängig vom Typ der beteiligten Objekte auf unterschiedliche Weisen genutzt werden, ohne den Code unnötig lang und kompliziert zu gestalten. Richtig angewendet bietet Polymorphie großes Potenzial, Aspekte wie Lesbarkeit, Wartbarkeit und Wiederverwendbarkeit zu optimieren.