C++ 순수 가상 클래스에 대해 알고 있지만 Java는 한 단계 더 나아가 다중 인터페이스 (구현이 아님) 상속 인 interface
에 대한 일류 클래스 개념을 만들었습니다. 이제는 주요 정적 유형 언어의 스테이플러가되었습니다. Java가 인터페이스 개념을 고안 했습니까? 아니면 오래된 언어로도 일류 개념으로 나타 났습니까?Java가 인터페이스를 발명 했습니까?
답변
다음은 Java 언어 환경 기사에서 추상화 한 내용입니다.
Java 언어의 인터페이스는 객체가 구현하는 것으로 선언 한 메소드의 사양 일뿐입니다. 인터페이스에는 인스턴스 변수 나 구현 코드가 포함되지 않으며 상수 및 메서드의 선언 만 포함됩니다. Java 언어의 인터페이스 개념은의 Objective-C 개념에서 빌려 왔습니다.
http://java.sun.com/docs/white/langenv/Object.doc2.html#6185
필드가없는 순수 가상 클래스는 Java 이전에 C++ 인터페이스에서 호출되었습니다. Java 인터페이스의 배경은 C++에서와 같이 불쾌한 다중 상속을 제거하는 것이지만 비슷한 기능을 남겨 둡니다.
자바 개발자가 인터페이스의 개념을 고안하지는 않았지만 대중화했다고 확신합니다.
내가 아는 한 Objective-C는 인터페이스 기능을 갖춘 첫 번째 언어입니다. 적어도 자바가 발명되기 전에 그것들을 가지고있었습니다.
Objective-C는 모르지만 wikipedia 항목에 따르면'interface'는 특정 클래스 인터페이스 (C++ 헤더 파일과 같은)의 forward 선언과 더 관련이 있으며 Java 인터페이스 개념이 아닌 것 같습니다 . 내가 틀렸다면 나를 바로 잡아주세요! –
물론 'Objective-C'에서는 'interface'개념을 'protocol'이라고 부릅니다. –
IDL, CORBA에서 사용하는 IDL은 80 년대 초반으로 거슬러 올라갑니다.
예.하지만 IDL은 언어의 일부가 아니며 언어 상호 운용성을위한 사양입니다. 하지만 당신 말이 맞아요. 일부 인터페이스에서 Java 인터페이스 개념에 영향을 미쳤을 수도 있습니다. –
@ Jordão IDL는 프로그래밍 언어로 작성되지 않았습니다. 그러나 그것은 언어입니다 (L 비트입니다). –
나는 ...의 IUnknown 및 IDispatch를 자바 전에 존재 확신하지만 정말 언어가 아닙니다 COM을합니다.
CORBA와 동일한 기능입니다. –
Java의 디자이너가 실제로 무엇을 발명 했습니까? AFAIK, 그들은 단순히 언어가 시작되기 전에 어느 정도 주변을 돌았던 많은 아이디어를 모았습니다. –
@Neil : 사실이지만 대부분의 비 학술적 언어가 만들어졌습니다. –
@ Joachim 예, 저는 비판을 의도하지 않았습니다. –