Was ist ein interface?



  • DocJunioR schrieb:

    Also meines Wissens ist Interface kein Bestandteil von C++.
    Interface definiert eine Schnittstelle, was bedeutet, dass keine Programmlogik enthalten ist, sondern nur Daten beschrieben werden, die zwischen verschiedenen Klassen ausgetauscht werden..
    Man könnte (und kreuzigt mich jetzt nicht) so gesehen die Structs in C/C++ als Interface interpretieren..

    Ein Interface beschreibt die Methoden. Also nix struct sondern abstrakte klasse



  • Im VS kann man afaik "__interface" schreiben 🙂



  • Ok. Vielen Dank für die Auskunft 🙂
    @Badestrand: Ich dachte mir wäre ein C++ Bestandteil durch die Lappen gegangen. Das Wort ist mir Pip! 🤡



  • Badestrand schrieb:

    Im VS kann man afaik "__interface" schreiben 🙂

    Ähmm, das hat aber nichts mit C++ als solches zu tun. Die __ Schreibweise wurde soviel ich weiß für "Managed C++" verwendet bevor es C++/CLI gab.

    cu André



  • asc schrieb:

    Badestrand schrieb:

    Im VS kann man afaik "__interface" schreiben 🙂

    Ähmm, das hat aber nichts mit C++ als solches zu tun.

    Jo ich weiß, wollte es nur mal erwähnen, weil's ja recht praktisch ist 😉



  • CStoll schrieb:

    in Java braucht's Interfaces, um die Einschränkungen zur Mehrfachvererbung umgehen zu können

    😕
    Java hat keine mehrfachvererbung und muss deshalb auch keine einschränkungen diesbezüglich umgehen. oder wie meinst du das?

    DocJunioR schrieb:

    Interface definiert eine Schnittstelle...

    richtig - und mehr steckt nicht dahinter. es gibt programmiersprachen die einem hilfen zur schnittstellendefinition anbieten (wie das eben erwähnte Java), andere haben es nicht, können aber auch technologien wie z.b. IDL (interface definition language) benutzen, wenn es sein muss.
    aber im prinzip ist ja schon ein funktionsprototyp eine art interface.
    🙂



  • Apeman schrieb:

    CStoll schrieb:

    in Java braucht's Interfaces, um die Einschränkungen zur Mehrfachvererbung umgehen zu können

    😕
    Java hat keine mehrfachvererbung und muss deshalb auch keine einschränkungen diesbezüglich umgehen. oder wie meinst du das?

    🙄



  • finix schrieb:

    Apeman schrieb:

    CStoll schrieb:

    in Java braucht's Interfaces, um die Einschränkungen zur Mehrfachvererbung umgehen zu können

    😕
    Java hat keine mehrfachvererbung und muss deshalb auch keine einschränkungen diesbezüglich umgehen. oder wie meinst du das?

    🙄

    wie? stimmt das nicht?



  • Hallo

    CStoll meinte mit Einschränkung eben genau das Fehlen von Mehrfachvererbung, das durch das Vorhandensein von interface ausgeglichen wird.

    bis bald
    akari



  • akari schrieb:

    CStoll meinte mit Einschränkung eben genau das Fehlen von Mehrfachvererbung, das durch das Vorhandensein von interface ausgeglichen wird.

    ach so, naja, so kann man es auch ausdrücken 😃
    @CStoll: http://www.javaworld.com/javaqa/2002-07/02-qa-0719-multinheritance.html
    🙂



  • Apeman schrieb:

    CStoll schrieb:

    in Java braucht's Interfaces, um die Einschränkungen zur Mehrfachvererbung umgehen zu können

    😕
    Java hat keine mehrfachvererbung und muss deshalb auch keine einschränkungen diesbezüglich umgehen. oder wie meinst du das?

    Genau diese Einschränkung meinte ich - Java hat keine echte Mehrfachvererbung und darum gibt's für Situationen, in denen etwas ähnliches gebraucht wird, die Interfaces. C++ hat Mehrfachvererbung und deshalb brauchen "wir" kein zusätzliches Sprachfeature für Interfaces.
    (und die Erklärungen, warum das so ist, sind zwar recht hilfreich, ändern aber nichts am Resultat ;))



  • CStoll schrieb:

    Nein, in C++ gibt es keine Interfaces, weil wir ganz gut ohne sie leben können ...

    Ich hätte ja eher gesagt: "Interfaces" sind nur ein Spezialfall von abstrakten Basisklassen. (aber es stimmt natürlich: Ohne Mehrfachvererbung nützten die einem auch nichts)

    Gruß,

    Simon2.



  • Im Visual Studio ist "interface" (sowie "__interface") deshalb "eingefärbt" weil es ein Attribute ist.
    Siehe attributed C++ (kann man z.B. verwenden um COM zeugs zu schreiben)


Anmelden zum Antworten