2010-10-03 31 views
8

Tôi biết rằng hầu hết mọi thứ trong ngôn ngữ lập trình hiện đại đều có ít nhất một phần dựa trên các tính năng bằng các ngôn ngữ trước đó.java đã lấy ý tưởng cho giao diện từ đâu?

Điều này dẫn tôi đến thắc mắc nơi java có nguồn cảm hứng cho giao diện. Có phải nó chủ yếu là sự sáng tạo của riêng họ? Nó dựa trên các lớp Abstract Base hoàn toàn (với nhiều thừa kế)?

+0

Tôi chắc chắn đây là một bản dupe. –

+0

Bạn có thể cho tôi biết đó là bản dupe của? Tôi cũng muốn thấy câu trả lời cho điều đó. –

Trả lời

7

Trong một cuốn sách Mục tiêu-C gần đây tôi đã đọc Learn Objective-C on the Mac, các tác giả gợi ý rằng nguồn cảm hứng chính cho giao diện của Java là từ việc thực hiện Mục tiêu-C của Mục tiêu Formal Protocols.

Các giao thức chính thức trong Obj-C là các tệp, giống như giao diện của Java, được lấp đầy bằng các phương thức trừu tượng. Trong bản cập nhật mới nhất cho Cocoa của Apple, các giao thức chính thức cũng có thể bao gồm các phương thức tùy chọn mà nhà phát triển không cần triển khai nếu lớp triển khai giao thức.

+3

Đội ngũ thiết kế Java biết đội ngũ thiết kế Objective-C rất tốt, và sau đó khi NeXTStep bắt đầu đi vòng cống, nhiều người trong số họ đã nhảy tàu và gia nhập Sun. Các giao thức không phải là điều duy nhất họ lấy từ Objective-C, thực sự là toàn bộ mô hình đối tượng và thậm chí khá nhiều toàn bộ ngôn ngữ được lấy từ Objective-C. Java là khá nhiều Objective-C - C + GC. –

+0

Tôi mặc dù các phần hướng đối tượng của Mục tiêu-C đã được nhập động? –

0

Thực ra Nó xuất phát từ ý tưởng về nhiều lớp kế thừa và trừu tượng. Ông Goslin thân mến của chúng tôi không muốn thừa hưởng nhiều cấp độ lớp học.

6

Tôi nghĩ rằng các nhà thiết kế của Java nhận ra rằng có a lot of flaws in using multiple implementation inheritance, nhưng vẫn muốn có thể nhân thừa kế. Do đó, giải pháp là multiple interface inheritance.

Ngoài ra, từ liên kết theo thời gian:

Thay vào đó, các nhà thiết kế của Java đã chọn để cho phép nhiều giao diện thừa kế thông qua việc sử dụng các giao diện, một ý tưởng vay mượn từ các giao thức Objective C. Thừa kế nhiều giao diện cho phép đối tượng kế thừa nhiều chữ ký phương thức khác nhau với báo trước rằng đối tượng kế thừa phải thực hiện các phương pháp kế thừa đó.

Vì vậy, Sean thực sự là chính xác.

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