2010-05-03 23 views
9

Tôi biết về các lớp học thuần túy thuần túy C++, nhưng Java đã tiến xa hơn một bước và tạo ra một khái niệm hạng nhất (không có ý định chơi chữ) cho kế thừa nhiều giao diện (không triển khai), interface. Nó bây giờ là một yếu của ngôn ngữ gõ chính tĩnh. Java có phát minh ra khái niệm giao diện không? Hay nó xuất hiện trong các ngôn ngữ cũ cũng là một khái niệm hạng nhất?Java có phát minh ra giao diện không?

+1

Các nhà thiết kế của Java có thực sự phát minh ra điều gì không? AFAIK, họ chỉ đơn giản là tập hợp một loạt các ý tưởng mà đã được sloshing xung quanh cho khá sometime trước khi khởi đầu của ngôn ngữ. –

+1

@Neil: đúng, nhưng đó là cách hầu hết các ngôn ngữ phi học thuật được tạo ra. –

+0

@ Joachim Vâng, tôi không có ý định chỉ trích. –

Trả lời

15

Dưới đây là tóm tắt từ bài viết Môi trường ngôn ngữ Java.

Giao diện trong ngôn ngữ Java chỉ đơn giản là một đặc điểm kỹ thuật của các phương thức mà một đối tượng tuyên bố nó thực hiện. Một giao diện không bao gồm các biến mẫu hoặc mã thực thi - chỉ các khai báo của các hằng số và các phương thức. Khái niệm về giao diện trong ngôn ngữ Java được mượn từ khái niệm Mục tiêu-C của giao thức.

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

2

lớp ảo thuần túy không có trường được gọi trong giao diện C++ ngay cả trước Java. Ý tưởng đằng sau giao diện của Java là loại bỏ nhiều thừa kế khó chịu như trong C++, nhưng để lại các khả năng tương tự.

1

Tôi khá chắc chắn rằng các nhà phát triển Java đã không phát minh ra khái niệm về giao diện nhưng họ phổ biến chúng.

5

Theo như tôi biết Objective-C là ngôn ngữ đầu tiên có giao diện. Ít nhất nó đã có chúng trước khi Java được phát minh.

+0

Tôi không biết Objective-C, nhưng với mục wikipedia của nó, có vẻ như giao diện 'của nó liên quan nhiều hơn đến một khai báo chuyển tiếp của một giao diện lớp cụ thể (như một tệp tiêu đề C++), chứ không phải khái niệm giao diện Java. . Nêu tôi sai vui long chân chỉnh tôi! –

+2

Tất nhiên, nhưng khái niệm 'giao diện' được gọi là 'giao thức' trong Mục tiêu-C. –

1

IDL, được CORBA sử dụng, tôi tin rằng sẽ quay lại đầu những năm 80.

+0

Có, nhưng IDL không phải là một phần của ngôn ngữ, mà là một đặc điểm kỹ thuật cho tương tác ngôn ngữ. Nhưng bạn nói đúng, nó có thể đã ảnh hưởng đến khái niệm giao diện Java trong một số khả năng. –

+1

@ Jordão IDL không phải là ngôn ngữ lập trình. Tuy nhiên nó là một ngôn ngữ (đó là bit L). –

4

Tôi khá chắc chắn IUnknown và IDispatch tồn tại trước khi Java ... Nhưng đó là COM, mà không phải là thực sự là một ngôn ngữ.

+0

Điều tương tự với CORBA. –

Các vấn đề liên quan