tôi nhìn thấy những thứ như thế này rất nhiều:lại thực hiện một giao diện mà giao diện khác đã được thừa hưởng
interface A { ... }
interface B : A { ... }
class C : B, A { ...}
Tại sao bạn sẽ xác định rằng C thực hiện giao diện A, B khi đã thừa hưởng A? Nó có tạo nên sự khác biệt ngữ nghĩa hay chỉ là vấn đề về phong cách?
(Một trong nhiều ví dụ là List<T>
thực hiện IList<T>
và ICollection<T>
, trong khi IList<T>
cũng xuất phát từ ICollection<T>
).
Cập nhật: Cảm ơn bạn đã xác nhận tôi đoán rằng nó không thực hiện bất kỳ sự khác biệt ngữ nghĩa.
tôi đã đưa ra một tình huống liên quan đến nơi nó không tạo sự khác biệt để đặt tên một cách rõ ràng một giao diện đó là đã có trong cây thừa kế:
Nếu B
là một lớp học, C
sẽ chỉ (lại) triển khai các thành viên giao diện từ A
nếu tên đó là A
một cách rõ ràng sau ':
'.
[EDIT] Tôi đã thay đổi từ ngữ của câu hỏi để tránh nhầm lẫn với các thành viên giao diện được triển khai rõ ràng, hạn chế việc sử dụng thành viên đối với trường hợp đối tượng được truyền làm giao diện.
Tôi nghĩ đó là để có thể đọc tốt hơn .. mà không cần phải làm việc các tế bào não của bạn đi qua hệ thống phân cấp giao diện thừa kế. – Gishu