Unterschied Vererbung und Polymorphie in Java?

2 Antworten

Poly = Viel

morphos = Gestalt.

Polymorphismus = Vielgestaltigkeit.

So kann eine geometrische Figur einfach als "Klasse Figur" implementiert werden mit einer Position (x, y) und einer Methode "move()" und einer einfachen Methode "draw()", welche einfach einen Punkt an die Stelle x,y zeichnet..

In den vererbten Klassen Dreieck, Rechteck und Kreis werden wir die Methode "draw()" nun überschrieben, sodass ein Dreieck, ein Rechteck beziehungsweise ein Kreis gezeichnet wird.

Eine Zeichnung besteht nun aber nicht aus drei Listen, eine für die Dreiecke, eine für die Rechtecke und eine für die Kreise, sondern nur noch aus einer einzigen Liste "Figuren". Da "Figur" die Überklasse über die drei konkreten Figuren ist, brauche ich nur noch eine einzige "foreach"-Schleife, um nun alle Figuren anzuzeigen. Der Array "meineFiguren" ist somit poly-morph und kann viele (in diesem Beispiel im wahrsten Sinne des Wortes) Formen annehmen:

Figur f;

foreach f aus meineFiguren do:

f -> draw()

oder in Java

for(Figur f: meineFiguren) f.draw();

Ich poste dennoch einen Link, wo ich Kapitel 20 empfehle. Dort sind weitere Beispiele:

https://programmieraufgaben.ch/uploads/oo.pdf

Ich werde dir an dieser Stelle doch einen Link posten, allerdings zu einer etwas älteren Antwort von mir, in der ich bereits ausführlich erklärt habe, was es mit Polymorphie auf sich hat.

https://www.gutefrage.net/frage/java-polymorphie?foundIn=list-answers-by-user#answer-268101402

(...) wann benutze ich es?

Polymorphie wird genutzt, um zum einen Objekte unterschiedlichen Datentyps (aber eines Basistyps) zu gruppieren und bspw. in einer Datenstruktur zu speichern, über die man iterieren kann.

Des Weiteren stellt es eine Abstraktion und somit eine Entkopplung von konkretem Quellcode dar. Du kannst für eine Server-Client-Architektur bspw. ein Interface definieren, welches auf beiden Seiten zum Einsatz kommt. Dabei steht die konkrete Implementation noch gar nicht fest, sie kann später flexibel festgelegt werden.

Wenn du dazu noch weitere Fragen hast, schreibe sie mir in den Kommentarbereich.


regex9  16.01.2018, 19:45

Ich habe noch etwas in meinen alten Beiträgen herumgesucht, um verwandte Fragen/Antworten zu finden, die zudem aufzeigen, wo Polymorphie praktisch verwendet wird.

0