Was ist Polymorphie in Java? Kim Peter Mesenhöller https://www.youtube.com/watch?v=j9QfB4Sf1pA Transkript (automatisch erstellt) 0:00 ja hallo zusammen in diesem Video möchte ich euch gerne einen Fachbegriff erklären der immer wieder im Zusammenhang mit objektorientierter 0:06 Programmierung vorkommt und zwar der Begriff der Polymorphie hierbei beschränke ich mich allerdings auf die Sprache 0:13 Java Java macht es sich da ein bisschen einfach weil in Java ist Polymorphie im Prinzip das sogenannte subtyping und das demonstriere ich euch jetzt einfach mal 0:24 eine einem konkreten Beispiel und zwar basiert subtyping bzw eben die Polymorphie wie sie in Java abgebildet wird auf einer 0:34 Vererbungshierarchie und zwar habe ich ein beginne ich bei einem abstrakten Objekt mein wegen der Vierbeiner und von diesem Vierbeiner 0:45 kann ich dann konkrete vier Beine ableiten wie z.B eine ein Hund oder eine Katze und wie 0:55 das geht das haben wir schon gelernt und zwar über das Schlüsselwort extend kann ich jetzt einfach sagen 1:04 Vierbeiner und in dieser Vierbeiner Klasse die ich hier einbinde habe ich eine Methode abstrakt definiert die ein 1:18 Standardverhalten beschreibt denn nämlich jeder Vierbeiner kann Rennen und das ist auch der Grund weshalb ich hier einen roten Strich bzw einen 1:29 Fehler habe weil nämlich ich dadurch dass ich eben in dieser Vierbeiner Klasse die rennmethode abstrakt definiert habe bin ich gezwungen diese 1:39 hier einzubinden also diese rennmethode muss in jedem Objekt BZ in jeder Klasse die ich von Vierbeiner ableite enthalten sein 1:51 deswegen füge ich die jetzt einfach mal hier ein das geht ganz einfach indem ich add unimplement method sage und hier schreibe ich jetzt einfach 2:02 rein system out 2:11 printline Hund rent ja und das gleiche das mache ich jetzt auch mit einer 2:19 Katze xtens vier Beine 2:27 und unimplanted methods und hier schreibe ich jetzt rein System 2:35 out.print line Karte 2:42 rent so und jetzt kommt der Begriff Polymorphie ins Spiel nämlich ich schreibe jetzt hier eine 2:52 Klasse zum Testen und zwar lege ich hier eine Instanz von Vierbeiner an und zwar einmal ein 3:06 Hund mit einem hundeobjekt und ein Vierbeiner Katze mit einem 3:18 katzenobjekt das funktioniert weil eben jeder Hund eine konkrete Implementierung eines Vierbeiners ist genauso wie eine 3:30 so und jetzt habe ich ja in beiden Klassen eine Methode Rennen ja und vom Verhalten wünsche ich es mir natürlich so dass wenn ich die rennmethode der 3:43 Katze Aufrufe die rennmethode von der Klasse Katze aufgerufen wird und bei dem Aufruf ein der rennmethode bei einem 3:56 hundeobjekt die rennmethode aus der Klasse Hund aufgerufen wird und das und das ist der wichtige Punkt das obwohl meine 4:06 Variablen von der Oberklasse Vierbeiner sind ja probieren wir das einfach mal aus undund Rennen und Katze Rennen so ich erwarte jetzt ich wünsche 4:23 mir die Ausgabe der Hund rennt und als zweites Katze rennt schauen wir uns das mal genauso ist es dieser Aufruf erzeugt 4:37 die Ausgabe hundren und dieser Aufruf erzeugt die Ausgabe Katze rent und ich wiederhole das noch mal und das obwohl sowohl Hund als auch Katze vom Typ 4:54 Vierbeiner sind in der wir die Methode Rennen nur als abstrakt definiert haben das heißt wir haben hier keine Funktionalität irgendwie 5:07 implementiert aber eben aufgrund der der Polymorphie ist das ist der Compiler so clever dass er eben hier dennoch die richtigen Methoden aufruft ja ein Wort 5:20 noch warum wir das subtyping nennen ja wir haben hier Vierbeiner ja und Vierbeiner ist halt die Oberklasse der konkreten Vierbeiner Katze und 5:30 Hund und deswegen nennen wir das subtyping weil eben Katze und Hund ein Untertyp von Vierbeiner ist vielen Dank fürs Zuhören bis zum nächsten Mal