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?
Antwort
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
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.
Ich bin mir ziemlich sicher, dass Java-Entwickler das Konzept der Schnittstellen nicht erfunden haben, aber sie popularisieren sie.
Soweit ich weiß, war Objective-C die erste Sprache mit Schnittstellen. Zumindest hatte es sie, bevor Java erfunden wurde.
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! –
Natürlich, aber das "Interface" -Konzept heißt in Objective-C "Protokoll". –
IDL, von CORBA verwendet, ich glaube, geht zurück zu den frühen 80er Jahren.
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. –
@ Jordão IDL ist keine Programmiersprache. Es ist jedoch eine Sprache (das ist das L-Bit). –
Ich bin mir ziemlich sicher, dass IUnknown und IDispatch vor Java existierte ... Aber das ist COM, die nicht wirklich eine Sprache ist.
Das gleiche gilt für CORBA. –
- 1. Wer hat Miller-Säulen erfunden?
- 2. Wer hat die switch statement erfunden?
- 3. Welche Datenbank hat die SQL-Abfragesyntax "limit" erfunden?
- 4. Warum wurde wchar_t erfunden?
- 5. Mehrfachvererbung auf Java-Schnittstellen
- 6. Java-Schnittstellen und Rückgabetypen
- 7. Java Schnittstellen Verzeichnisstruktur?
- 8. Tagging-Schnittstellen in Java
- 9. mit Java Generika in Schnittstellen
- 10. Java-Schnittstellen und neue Klasse
- 11. Java ORM: Multiple (Schnittstellen-) Vererbung
- 12. Verwechslung mit Schnittstellen in Java
- 13. Standardmethode Rückgabewert in Java-Schnittstellen
- 14. Proguard behalten alle Java-Schnittstellen
- 15. Java Generics, Schnittstellen und Typeinschränkungen
- 16. Wer erfunden Proxy Passing und wann?
- 17. Wie werden Java-Schnittstellen intern implementiert? (VTabellen?)
- 18. Java-Schnittstellen - Was genau ist im Vertrag?
- 19. Java/Hibernate mit Schnittstellen über die Entitäten
- 20. Wann funktionale Schnittstellen in JAVA 8
- 21. Java generisches Objekt mit mehreren Schnittstellen Gießen
- 22. Warum brauchen wir Schnittstellen in Java?
- 23. Wie implementiert man Java-Schnittstellen in Frege?
- 24. Standard-Schnittstellen
- 25. Einstellungen von abstrakten Klassen über Schnittstellen in Java 8
- 26. Export-Schnittstellen
- 27. Warum hat Java neue?
- 28. Hat Java automatische Eigenschaften?
- 29. Standardmethoden und Schnittstellen erweitern andere Schnittstellen
- 30. Listing Schnittstellen in Schnittstellen in Go
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. –
@Neil: Wahr, aber so wurden die meisten nicht-akademischen Sprachen erstellt. –
@Joachim Ja, ich wollte keine Kritik. –