2013-06-11 65 views
7

Theo như tôi biết, Groovy đã có mixins, Scala có những đặc điểm. C gia đình có nhiều thừa kế. Vậy tại sao chức năng mới trong Java được gọi là "phương pháp mở rộng"? Nó chỉ là một cái tên khác cho cùng một thứ, hay có lý do khác? Sự khác biệt giữa các đặc điểm và mixin là gì? họ thêm gì và họ thiếu gì?Phương pháp mở rộng Java 8 - tại sao chúng không được gọi là mixin hoặc các đặc điểm?


Cá nhân tôi thấy chúng nhiều hơn là "phương pháp triển khai" so với "phương pháp mở rộng".

+5

Một điểm khác biệt lớn là giao diện không thể có trường mẫu. – yshavit

Trả lời

7

Vậy tại sao chức năng mới trong Java được gọi là "phương pháp mở rộng"?

AFAIK, Tên này đến từ C#. Các phương thức mở rộng ảo chỉ dành cho các phương thức trong khi các mixin và các đặc điểm cũng áp dụng cho các trường.

Interface evolution via virtual extension methods Lưu ý: Brian tự gọi họ là "Phương thức bảo vệ" nhưng tôi cho rằng "Phương pháp mở rộng ảo" được công nhận rộng rãi hơn.

JVM Language Summit 2011 - Brian Goetz Tôi khá chắc chắn đây là nơi ông nói về lý do tại sao nó có tên nó.

+3

Vâng, thực sự mixins cung cấp cho cả hành vi và thừa kế nhà nước, trong khi các đặc điểm chỉ cho hành vi. Tôi biết, Scala có 'Traits' và họ có thừa kế nhà nước ... nhưng chính xác thì đó là mixin. – Enkk

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