Was ist ein interface?
-
Hallo Forum,
wenn ich im VS interface schreibe wird es als Keyword erkannt? Wenn ich im Web nach C++ und interface suche finde ich aber nur einen Link auf einen Thread hier im Java FAQ Forum. Gibt es in C++ Interfaces? Könnte mir jemand ein Beispiel zeigen?
Boran
-
Nein, in C++ gibt es keine Interfaces, weil wir ganz gut ohne sie leben können (in Java braucht's Interfaces, um die Einschränkungen zur Mehrfachvererbung umgehen zu können - in C++ reichen dafür "normale" abstrakte Klassen aus).
(Anmerkung: Ich bin mir nicht sicher, aber eventuell gibt es in C++/CLI oder C# das Schlüsselwort auch)
-
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..
-
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)