Ява изобрела интерфейсы? - PullRequest
10 голосов
/ 03 мая 2010

Я знаю о чистых виртуальных классах C ++, но Java пошла еще дальше и создала первоклассную (не каламбурную) концепцию для наследования с несколькими интерфейсами (не для реализации), interface. Теперь это один из основных языков статической типизации. Ява изобрела концепцию интерфейса? Или оно появилось на старых языках также как первоклассная концепция?

Ответы [ 7 ]

16 голосов
/ 03 мая 2010

Вот выдержка из статьи «Языковая среда Java».

Интерфейс в языке Java - это просто спецификация методов, которые объект объявляет, что он реализует. Интерфейс не содержит переменных экземпляра или кода реализации - только объявления констант и методов. Концепция интерфейса в языке Java была заимствована из Objective-C концепции протокола .

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

5 голосов
/ 03 мая 2010

Насколько я знаю, Objective-C был первым языком с интерфейсами. По крайней мере, они были до того, как была изобретена Java.

4 голосов
/ 03 мая 2010

Я почти уверен, что IUnknown и IDispatch существовали до Java ... Но это COM, который на самом деле не является языком.

2 голосов
/ 03 мая 2010

чистые виртуальные классы без полей вызывались в интерфейсах C ++ еще до Java. Идея интерфейсов Java заключалась в том, чтобы убрать неприятное множественное наследование, как это было в C ++, но оставить схожие возможности.

1 голос
/ 03 мая 2010

IDL, используемый CORBA, я полагаю, восходит к началу 80-х годов.

1 голос
/ 03 мая 2010

Я совершенно уверен, что разработчики Java не придумали концепцию интерфейсов, но они популяризировали их.

0 голосов
/ 09 сентября 2018

Я люблю интерфейсы, но я только начинаю изучать, как их использовать. Самая гибкая и мощная интерфейсная система, которая существует на языке программирования, - это Go, но, как отмечали люди, Java популяризировал их, но они существовали 20 лет назад, и я хотел бы вспомнить язык, который я нашел на днях, начинается с «Я думаю, может быть, что-то о минерале или цветке в названии.

Основной принцип интерфейсов - создание описаний того, как они передают значения между. Они создают способ передачи фрагмента данных с некоторым набором применений в другую форму с очень близким набором применений. Интерфейсы обычно используют схему именования, чтобы указать, что определение интерфейса вращается вокруг абстрактной общности между несколькими вещами. В программировании все сводится к байтам, поэтому вы можете создавать интерфейсы вокруг совместного использования байтов, всегда есть некоторая общая особенность.

В практическом смысле интерфейс - это набор методов, окружающих тип данных, который вы не указали, за исключением расплывчатых. Go научит вас хорошо об интерфейсах. Интерфейсы появляются наиболее заметно на наиболее объектно-ориентированном языке, как OP, java, но, насколько я знаю, Go имеет самую мощную интерфейсную систему. Go имеет статическую типизацию, но типы интерфейсов не ограничивают данные в Go. Только те ограничения, которые вы определяете для типов, которые может пройти интерфейс.

Я только начинаю учиться программировать на Go с интерфейсами, но большой опыт, полученный опыт программистов на Go, полезен всем, кто интересуется интерфейсами. Интерфейсы должны быть компактными и функциональными. Очень часто вам не нужно определять интерфейс, потому что данные слишком разные. Может быть для хранения и передачи, все данные === все данные. Для этого и нужны интерфейсы. Две разные системы, какими структурами данных они делятся. Это именно то, что интерфейс.

...