Mehrfachvererbung und Interfaces



  • Helium schrieb:

    Eine abstrakte Klasse muß doch aber nicht zwangsläufig eine Schnittstelle sein, oder? (Es geht mir dabei wirklich bloß um die Definition)

    Nein, eine Abstrakte Klasse kann trotzdem Methoden implementieren und Daten beinhalten, was bei Schnittstellen nicht der Fall ist.

    Schnittstelle kann auch reine virtuelle Methode implemetieren.



  • wenn du mehrfach von pure virtual klassen (das meinst du mit "interfaces", oder?) ableitest

    Es gibt keine "pure virtual Klassen".

    Wer nutzt denn in C++ die Bezeichnung "Protokoll"?

    Scotter Meyers, Herb Sutter, John Lakos um nur einige zu nennen.



  • Ich denke, das was du meinst ist "ist implementiert mit"? Also analog zum Java-Interface?

    Weil dafür gibts dann in C++ die private "Vererbung" (hab ich extra in Anführungsstrichen!).

    class Hund : public Tier : private XYInterface
    {}
    

    In dem Fall ist Hund von Tier abgeleitet (Hund ist ein Tier) und hat die Implementierung XYInterface. Wobei das hier KEINE Mehrfachvererbung ist. Das klommt allerdings denke ich deinem gewünschten Interface nahe.



  • Artchi schrieb:

    Ich denke, das was du meinst ist "ist implementiert mit"? Also analog zum Java-Interface?

    Weil dafür gibts dann in C++ die private "Vererbung" (hab ich extra in Anführungsstrichen!).

    Java-Interfaces haben weder mit "ist implementiert mit" noch mit privater Vererbung auch nur das geringste zu tun.

    class Hund : public Tier : private XYInterface
    {}
    

    In dem Fall ist Hund von Tier abgeleitet (Hund ist ein Tier) und hat die Implementierung XYInterface. Wobei das hier KEINE Mehrfachvererbung ist. Das klommt allerdings denke ich deinem gewünschten Interface nahe.

    Das ist ein Syntaxfehler. Solltest du class Hund: public Tier**,** private XYInterface gemeint haben: Natürlich ist das Mehrfachvererbung.



  • @Artchi
    Interface + private Vererbung ist ein widerspruch in sich. Ich glaube du sitzt hier einer furchtbaren Verwechslung auf.



  • Eher entschpricht "implements Interface" in Java der "public" Vererbung als der "private" Vererbung in C++.



  • implements in Java entspricht IMO der public Vererbung in C++ mit pure virtual Klassen.
    Ich benutze sowas, um bestimmte Eigenschaften sicherzustellen, in der Java-API kann man das ganz gut sehen. Da gibt es Interfaces wie Cloneable, Compareable, etc.



  • Optimizer schrieb:

    implements in Java entspricht IMO der public Vererbung in C++ mit pure virtual Klassen.
    Ich benutze sowas, um bestimmte Eigenschaften sicherzustellen, in der Java-API kann man das ganz gut sehen. Da gibt es Interfaces wie Cloneable, Compareable, etc.

    Stimmt. Nur ist Clonable eine der schlecht entworfenen Schnittstellen.



  • Optimizer schrieb:

    implements in Java entspricht IMO der public Vererbung in C++ mit pure virtual Klassen.
    Ich benutze sowas, um bestimmte Eigenschaften sicherzustellen, in der Java-API kann man das ganz gut sehen. Da gibt es Interfaces wie Cloneable, Compareable, etc.

    HumeSikkins schrieb:

    Es gibt keine "pure virtual Klassen".

    Da hab ich fast lust den Spruch "Wer lesen kann ist klar im Vorteil" zu bringen. 🙄



  • Da hab ich fast Lust, den Spruch "wer denken kann, wird es schon verstehen" zu bringen. 🙄



  • HumeSikkins schrieb:

    Es gibt keine "pure virtual Klassen".

    hm, dann hab ich wohl was verwechelt. was ist dann eine klasse, die etwa so aufgebaut ist:

    class MyClass
    {
        virtual void myFunc() = 0;
    }
    

    war es nicht so, dass man von diesen klassen keine instanz bilden kann, und sie deshalb irgendwie speziell heissen?
    *amschlauchsteh*



  • «abstrakt»



  • ah, danke 🙂


Anmelden zum Antworten