2010-05-03 3 views
9

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

+1

Разработали ли дизайнеры Java что-нибудь? AFAIK, они просто объединили кучу идей, которые шли довольно часто до появления языка. – 2010-05-03 14:11:33

+1

@Neil: правда, но так было создано большинство неакадемических языков. –

+0

@ Джойхим Да, я не собирался критиковать. – 2010-05-03 14:14:45

ответ

15

Реферат из статьи Языковая среда Java.

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

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

2

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

1

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

5

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

+0

Я не знаю Objective-C, но по его записи в wikipedia кажется, что его «интерфейс» больше связан с прямым объявлением определенного интерфейса класса (например, заголовочным файлом C++), а не с концепцией интерфейса Java , Пожалуйста, поправьте меня, если я ошибаюсь! –

+2

Конечно, но понятие «интерфейс» называется «протоколом» в Objective-C. –

1

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

+0

Да, но IDL не является частью языка, а является спецификацией языкового взаимодействия. Но вы правы, это могло повлиять на концепцию интерфейса Java в некоторой степени. –

+1

@ Jordão IDL не является языком программирования. Это, однако, язык (то есть бит L). –

4

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

+0

То же самое с CORBA. –

Смежные вопросы