Wofür sind reine abstrakten Klasse und ist Polymorphismus immer dabei?



  • Eine abstrakte Klasse bietet nur eine Schnittstelle, über die ein Objekt angesprochen wird (indem sie ein Set an pur virtuellen Methoden definiert), überlässt es aber ihren Kindern, was sie hinter den Kulissen daraus machen (die abgeleitete Klasse muss die pur virtuellen Methoden überschreiben und etwas sinnvolles machen).
    Der Vorteil für den Nutzer ist, daß er zwar weiß, wie er die Klassen ansprechen muß, es ihm aber egal sein kann, wie seine Anfragen behandelt werden.

    @Polymorphie:
    Dabei wird erst zur Laufzeit (aufgrund des dynamischen Typs eines Objekts) festgelegt, welche Implementierung einer Methode aufgerufen wird - d.h. du hast einen Zeiger auf ein Basis-Objekt und je nachdem, wie dieses Objekt erzeugt wurde, wird entweder die Methode von Kind1 oder Kind2 aufgerufen (eventuell auch die Methode aus Basis).

    Polymorphie basiert auf virtuellen Funktionen, allerdings ist es nicht notwendig, daß die Basisklasse abstrakt ist. Umgekehrt führt eine abstrakte Klasse normalerweise dazu, daß polymorphe Strukturen verwendet werden (aber niemand zwingt dich, ein Kind-Objekt über einen Basis* zu verarbeiten).



  • Ist meine folgende Gedanke richtig:
    Mit Hilfe von virtuelle Methoden kann man nur Polymorpfismus realisieren?!



  • goldslawik schrieb:

    Ist meine folgende Gedanke richtig:
    Mit Hilfe von virtuelle Methoden kann man nur Polymorpfismus realisieren?!

    Ja, Polymorphismus realisiert man nur über virtuelle Methoden (in C++).



  • Hallo GPC,

    ich habe vielleicht nicht richtig ausgedrückt:
    Mit Hilfe von virtuelle Methoden kann man nur Polymorpfismus realisieren und SONST NICHTS ANDERES?!



  • Ach so, jetzt (hab mich noch über deinen Satzbau gewundert 😃 ).

    Und ja, mit virtual erzeugt man nur Polymorphie (aber das ist schon eine ganze Menge). Was willst du denn noch als Beilage?

    MfG

    GPC



  • Noch mal Vielen Dank an alle 👍



  • goldslawik schrieb:

    kann mir jemand erklären, was für ein Sinn reine abstrakte Klasse haben und wann muss man solche Klasse sinnvoll einsetzen.
    Ich habe lange Zeit versucht das nachzuvollziehen, aber vielleicht stehe ich auf dem falschen Weg?

    Das habe ich mich auch alles mal gefragt, aber als ich dann Effektiv C++ gelesen hatte und was über Pinguine lernte und anderes, wurde mir genau klar wann und wo ich es einsetzen musste.

    Das war ein tolles Gefühl 😃 😃



  • Freak_Coder schrieb:

    Das habe ich mich auch alles mal gefragt, aber als ich dann Effektiv C++ gelesen hatte und was über Pinguine lernte und anderes, wurde mir genau klar wann und wo ich es einsetzen musste.

    Das war ein tolles Gefühl 😃 😃

    jau! "Effektiv C++ programmieren" ist total der bringer.



  • Kann ich bestätigen. Sehr gutes Lehrbuch. 👍



  • goldslawik schrieb:

    Polymorpfismus !

    ^^ 😃


Anmelden zum Antworten