bin auf der Suche nach einer kurzen und prägnanten Definition von dem Begriff Polymorphie. Habe bisher folgendes geschrieben:
Funktionen werden in abgeleiteten Klassen redefiniert und können über einen einheitlichen Aufruf benutzt werden. Dabei wird erst zur Laufzeit entschieden, welche Funktion für welches Objekt aufgerufen wird ("Late Binding").
Ist das soweit richtig ? Bin für Vorschläge & Ergänzungen dankbar!!
Polymorphie bedeutet Methoden zu überschreiben - virtuelle Methode. Dazu wird in einer abgeleiteten Klasse die Methode neu definiert. Wobei die Basis-Klasse mit ihren Methoden dennoch aufrufbar bleibt - im gegensatz zur rein virtuellen Methode/abstrakt.
Bsp.:
Ein Objekt der Klasse Rechteck hat den Umfang 2(a+b) somit die Methode mUmfang(a,b){...}.
Ein abgeleitete Klasse vom Rechteck (z.b.Quadrat) hat allerdings eine andere Methode um seinen Umfang zu berechnen (4*a) mUmfang(a){...}.
Ich hoffe das stimmt mal alles, habs mir so aus dem Kopf zusammen gedacht.
Nö, Polymorphie bedeutet praktisch, dass mehrere Funktionen den selben Namen haben und sich nur durch Parameterzahl oder Parameter-/Rückgabetyp unterscheiden können. Abstraktere Definitionen gibt's auf wikipedia. -- main($)??<-$<='?'>>2?main($-!!putchar( (("$;99M?GD??(??/x0d??/a:???;a"+'?'/4) ??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
Nö, Polymorphie bedeutet praktisch, dass mehrere Funktionen den selben Namen haben und sich nur durch Parameterzahl oder Parameter-/Rückgabetyp unterscheiden können.
Der Wikipedia-Artikel gibt ja eine brauchbare Übersicht, wobei ich den Begriff "Polymorphie" bislang nur im Kontext der Vererbung und dem Überschreiben von Methoden kannte.
Und hier heißt das Ding polymorph ("vielgestaltig"), weil der hinter dem Aufruf einer Methode sich viele verschiedene Varianten verstecken können:
C++:
void draw(ShapeList list) { for (int i=0; i<list.size(); i++) { Shape* s = list[i]; s->draw(); // kann Square::draw() sein, Rectangle::draw(), Circle::draw(), ... also vielgestaltig } }