2010-05-03 7 views
9

C++ 순수 가상 클래스에 대해 알고 있지만 Java는 한 단계 더 나아가 다중 인터페이스 (구현이 아님) 상속 인 interface에 대한 일류 클래스 개념을 만들었습니다. 이제는 주요 정적 유형 언어의 스테이플러가되었습니다. Java가 인터페이스 개념을 고안 했습니까? 아니면 오래된 언어로도 일류 개념으로 나타 났습니까?Java가 인터페이스를 발명 했습니까?

+1

Java의 디자이너가 실제로 무엇을 발명 했습니까? AFAIK, 그들은 단순히 언어가 시작되기 전에 어느 정도 주변을 돌았던 많은 아이디어를 모았습니다. –

+1

@Neil : 사실이지만 대부분의 비 학술적 언어가 만들어졌습니다. –

+0

@ Joachim 예, 저는 비판을 의도하지 않았습니다. –

답변

15

다음은 Java 언어 환경 기사에서 추상화 한 내용입니다.

Java 언어의 인터페이스는 객체가 구현하는 것으로 선언 한 메소드의 사양 일뿐입니다. 인터페이스에는 인스턴스 변수 나 구현 코드가 포함되지 않으며 상수 및 메서드의 선언 만 포함됩니다. Java 언어의 인터페이스 개념은의 Objective-C 개념에서 빌려 왔습니다.

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

2

필드가없는 순수 가상 클래스는 Java 이전에 C++ 인터페이스에서 호출되었습니다. Java 인터페이스의 배경은 C++에서와 같이 불쾌한 다중 상속을 제거하는 것이지만 비슷한 기능을 남겨 둡니다.

1

자바 개발자가 인터페이스의 개념을 고안하지는 않았지만 대중화했다고 확신합니다.

5

내가 아는 한 Objective-C는 인터페이스 기능을 갖춘 첫 번째 언어입니다. 적어도 자바가 발명되기 전에 그것들을 가지고있었습니다.

+0

Objective-C는 모르지만 wikipedia 항목에 따르면'interface'는 특정 클래스 인터페이스 (C++ 헤더 파일과 같은)의 forward 선언과 더 관련이 있으며 Java 인터페이스 개념이 아닌 것 같습니다 . 내가 틀렸다면 나를 바로 잡아주세요! –

+2

물론 'Objective-C'에서는 'interface'개념을 'protocol'이라고 부릅니다. –

1

IDL, CORBA에서 사용하는 IDL은 80 년대 초반으로 거슬러 올라갑니다.

+0

예.하지만 IDL은 언어의 일부가 아니며 언어 상호 운용성을위한 사양입니다. 하지만 당신 말이 맞아요. 일부 인터페이스에서 Java 인터페이스 개념에 영향을 미쳤을 수도 있습니다. –

+1

@ Jordão IDL는 프로그래밍 언어로 작성되지 않았습니다. 그러나 그것은 언어입니다 (L 비트입니다). –

4

나는 ...의 IUnknown 및 IDispatch를 자바 전에 존재 확신하지만 정말 언어가 아닙니다 COM을합니다.

+0

CORBA와 동일한 기능입니다. –

관련 문제