Zurück zur Übersicht

Begriff

Polymorphism

Development OOP S2
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Das Wort bedeutet "Vielgestaltigkeit". In Python/Java heißt das: Eine Funktion verhält sich anders, je nachdem wer sie aufruft. Du hast eine Liste von Tieren: [Hund, Katze, Kuh]. Du rufst für jedes Tier machGeräusch() auf.

  • Der Hund macht "Wuff".
  • Die Katze macht "Miau". Der Code ruft immer dieselbe Methode, aber das Ergebnis ist individuell. Du musst nicht wissen, welches Tier es ist (if (tier == hund) ...). Du vertraust darauf, dass es "sprechen" kann.

Merksatz: Die Fähigkeit einer Programmiersprache, Objekte unterschiedlicher Klassen über eine einheitliche Schnittstelle anzusprechen, wobei sich das konkrete Verhalten erst zur Laufzeit entscheidet.


Quick-Check

  1. Interface vs Abstract Class?
    Interface = Nur Vertrag ("Du musst essen() können"). Abstrakte Klasse = Vertrag + Basis-Code ("Ich zeig dir, wie man kaut, aber was du schluckst, ist deine Sache").
  2. Late Binding?
    Das technische Wort für Polymorphie. Die Verknüpfung "Methodenname -> Maschinencode" passiert erst spät (zur Laufzeit), nicht früh (beim Kompilieren).
  3. Liskov Substitution Principle?
    Wenn Ente von Vogel erbt, muss ich überall, wo Vogel erwartet wird, eine Ente reinstecken können, ohne dass das Programm abstürzt. Polymorphie muss sicher sein.