Vererbung (Mehrfachvererbung)



  • Nabend, keiner ne Info für mich?

    Gruß
    Sven



  • Wie soll jemand eine sinnvolle Lösungsalternative vorschlagen ohne das zu Grunde liegende Problem zu kennen?

    Prinzipiell kann man auch mit Interfaces keine Merhfachvererbung realisieren, kurz gesagt: Es gibt keine Mehrfachvererbung. (Und dies ist eine digitale Aussage, entweder es gibt sie, oder es gibt sie nicht)

    Eine Klasse kann aber beliebig viele Interfaces implementieren, z.B:

    class A : IAnfang, IMitte, IEnde
      {
      }
    

    UNd Du programmierst dann gegen die Interfaces und nicht gegen die Klasse selbst.



  • die mehrfachvererbung wie du sie aus c++ kennst ist so verboten wurde, durch den "Deadly Diamond of Death" - sagt dir bestimmt was

    ich selber bin schon seit jeher ohne mehrfachvererbung ausgekommen (amsonsten, erstell doch ne dummy kette, ist aber haesslich)

    class derived : base1, base2, base3
    
    class derived : base1
    { .. }
    
    class base1 : base 2 {}
    class base2 : base 3 {}
    

    das problem dabei sind nur abstrakte klassen, da man die aufloesen muss



  • Hi,
    loks mein zu lösendes Problem habe ich schon geschildert. Ja, inzwischen habe ich es schon verstanden, dass eine "echte" Mehrfachvererbung nicht möglich ist.

    Mr. Evil, eben eine Dummykette ist hässlich und in meinem Fall auch nicht sinnvoll. Nun werde ich mich etwas umstellen und die Klassen-Hierarchie abändern. Blöd ist nur wenn man sich die Vorgehensweise einfach angewöhnt hat und nun aber nicht mehr möglich ist. Deswegen habe ich auch so verzweifelt nach einer Lösung gesucht. Aber mit dieser Einschränkung kann/muss ich leben. 😉

    Vielen Dank euch beiden.

    Gruß
    Sven



  • gortosch schrieb:

    Mr. Evil, eben eine Dummykette ist hässlich ...

    Mr Evil schrieb:

    ... ist aber haesslich)



  • Müssen denn alle 3 Basisklassen wirklich vererbt werden? Meistens reichen auch einfach Member.
    Und der Rest (d.h. die Kommunikation nach draußen) geschieht dann über Interfaces.
    Solange man jetzt nicht Hunderte von Methoden bzw. Unterklassen davon erzeugt, so ist daß auch keine große Schreibarbeit.

    Ansonsten stell doch einfach mal deine 3 Klassen hier schematisch vor...



  • Hi,
    danke für die Info.

    Ich hätte erst mal genauer über die Zusammenhänge der Klassen nachdenken sollen bevor ich hier meine Frage stelle. Es hat sich herausgestellt, dass eine Mehrfachvererbung völlig unnötig ist. Ich muss sagen, C# gefällt mir immer besser im Vergleich zu C++.

    Gruß
    Sven



  • gortosch schrieb:

    Nun, die Mehrfachvererbung ist ja, aus gutem Grund, in .Net nicht möglich.

    Welchen guten Grund meintest Du eigentlich? Gut, es hat Dir geholfen Dein Design nochmal zu überdenken. Was noch?



  • Hi,
    wurde schon erwähnt.

    Mr Evil schrieb:

    die mehrfachvererbung wie du sie aus c++ kennst ist so verboten wurde, durch den "Deadly Diamond of Death" - sagt dir bestimmt was

    Gruß
    Sven



  • Kein Grund es zu verbieten IMHO. Zumindest kein guter. 🙂


Anmelden zum Antworten