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와 동일한 기능입니다. –
- 1. Java가
- 2. JAVA가 : 필터
- 3. "발명의 선행 발명 및 원본 저작물"은 무엇을 의미합니까?
- 4. Java가 com.apple.loginitems를 호출합니다.
- 5. Java가 계속 유지되지 않았습니까?
- 6. getchar에 해당하는 Java가 있습니까?
- 7. Java가 어설 션되어 있습니까?
- 8. Java가 app.config에 해당합니까?
- 9. libevent에 해당하는 Java가 있습니까?
- 10. Java가 연결 끊김을 감지했습니다.
- 11. Java가 매개 변수
- 12. Java가 .Net의 NotSupportedException에 해당합니다.
- 13. Java가 특성 파일에 구성됩니다.
- 14. java가 http 요청에 대해 특정 발신 IP 인터페이스를 사용하도록 어떻게 지시 할 수 있습니까?
- 15. 인터페이스를 반환하는 자동 속성
- 16. UITableView가 선택 했습니까?
- 17. Java가 아닌 클라이언트에서 HDFS 파일을 읽는 방법
- 18. Vista 상자에있는 Java가 XP에 있다고보고하는 이유는 무엇입니까?
- 19. 대안 --config java가 오류를 발생합니다.
- 20. 데이터베이스가 비어있는 경우 Java가 중단됩니다.
- 21. Java가 InputStream에서 읽기 위치를 저장합니까?
- 22. 날짜가 존재하는지 Java가 있는지 확인
- 23. Java가 내 PC에서 작동하지 않습니다.
- 24. Java가 나에게 IllegalArgumentException을주는 이유는 무엇입니까?
- 25. 설치 전에 Java가 있는지 확인하십시오.
- 26. Java가 파일 시스템의 변경을 감지합니다.
- 27. Java가 Oracle 커서를 해제하지 않습니다.
- 28. java가 private 메소드에서 public으로 리턴한다.
- 29. .Net System.Data에 해당하는 Java가 있습니까?
- 30. Java가 너무 많은 메모리를 사용합니다.
Java의 디자이너가 실제로 무엇을 발명 했습니까? AFAIK, 그들은 단순히 언어가 시작되기 전에 어느 정도 주변을 돌았던 많은 아이디어를 모았습니다. –
@Neil : 사실이지만 대부분의 비 학술적 언어가 만들어졌습니다. –
@ Joachim 예, 저는 비판을 의도하지 않았습니다. –