2010-05-03 16 views
9

Ich weiß über rein virtuelle C++ - Klassen, aber Java ging noch einen Schritt weiter und schuf ein erstklassiges (kein Wortspiel beabsichtigt) Konzept für Mehrfachvererbung (keine Implementierung), die interface. Es ist jetzt ein Grundnahrungsmittel der großen statisch-typisierten Sprachen. Hat Java das Interface-Konzept erfunden? Oder erschien es in älteren Sprachen auch als erstklassiges Konzept?Hat Java Schnittstellen erfunden?

+1

Haben die Designer von Java wirklich etwas erfunden? AFAIK, sie brachten einfach eine Reihe von Ideen zusammen, die schon lange vor der Einführung der Sprache herumsprudelten. –

+1

@Neil: Wahr, aber so wurden die meisten nicht-akademischen Sprachen erstellt. –

+0

@Joachim Ja, ich wollte keine Kritik. –

Antwort

15

Hier ist eine Zusammenfassung des Artikels Die Java Language Environment.

Eine Schnittstelle in der Java-Sprache ist einfach eine Spezifikation von Methoden, die ein Objekt für die Implementierung deklariert. Eine Schnittstelle enthält keine Instanzvariablen oder Implementierungscodes - nur Deklarationen von Konstanten und Methoden. Das Konzept einer Schnittstelle in der Sprache Java wurde aus dem Objective-C-Konzept eines Protokolls übernommen.

http://java.sun.com/docs/white/langenv/Object.doc2.html#6185

2

reine virtuelle Klassen ohne Felder wurden in C++ - Interfaces schon vor Java aufgerufen. Die Idee hinter den Java-Schnittstellen bestand darin, bösartige Mehrfachvererbung wie in C++ zu entfernen, aber ähnliche Funktionen zu lassen.

1

Ich bin mir ziemlich sicher, dass Java-Entwickler das Konzept der Schnittstellen nicht erfunden haben, aber sie popularisieren sie.

5

Soweit ich weiß, war Objective-C die erste Sprache mit Schnittstellen. Zumindest hatte es sie, bevor Java erfunden wurde.

+0

Ich kenne Objective-C nicht, aber durch seinen Wikipedia-Eintrag scheint es, dass seine 'Schnittstelle' mehr mit einer Vorwärtsdeklaration einer spezifischen Klassenschnittstelle (wie einer C++ - Headerdatei) und nicht mit dem Java-Schnittstellenkonzept verbunden ist . Bitte korrigiere mich wenn ich falsch liege! –

+2

Natürlich, aber das "Interface" -Konzept heißt in Objective-C "Protokoll". –

1

IDL, von CORBA verwendet, ich glaube, geht zurück zu den frühen 80er Jahren.

+0

Ja, aber IDL ist nicht Teil einer Sprache, sondern einer Spezifikation für die Interoperation der Sprache. Aber Sie haben Recht, es könnte das Java-Interface-Konzept in gewisser Weise beeinflusst haben. –

+1

@ Jordão IDL ist keine Programmiersprache. Es ist jedoch eine Sprache (das ist das L-Bit). –

4

Ich bin mir ziemlich sicher, dass IUnknown und IDispatch vor Java existierte ... Aber das ist COM, die nicht wirklich eine Sprache ist.

+0

Das gleiche gilt für CORBA. –