Bây giờ, chúng ta biết rằng Java 8 đã giới thiệu các phương thức mặc định và tĩnh trong các giao diện.
Giao diện ban đầu được giới thiệu trong Java để tránh the diamond problem xảy ra trong C++, trong đa kế thừa.Tùy chọn các lớp trừu tượng trên các giao diện trong Java 8
Nhưng cùng với việc giới thiệu các phương thức mặc định trong giao diện trong Java 8, bây giờ, Java cũng đã giới thiệu vấn đề kim cương mà nó tránh được trong các phiên bản trước.
Phương pháp mặc định không bắt buộc phải được ghi đè.
Nhưng khi một viên kim cương gặp sự cố khi sử dụng giao diện, lớp triển khai các giao diện phải ghi đè các phương thức mặc định.
Vì vậy, bây giờ, tôi có ba câu hỏi trong tâm trí tôi:
- Tại sao cần phải có phương pháp mặc định?
- Chúng ta không thể có nhiều thừa kế thông qua các lớp, thay vì có các phương thức mặc định trong giao diện?
- Và điều gì là cần thiết để tránh vấn đề kim cương trong các phiên bản trước, nếu họ phải giới thiệu nó trong Java 8?
Bất kỳ lời giải thích hay liên kết nào để giải thích?
PS Tôi không tìm thấy bất kỳ liên kết nào trên internet có chứa bất kỳ bài viết hay về điều này.
Tất cả những gì họ nói là một lớp trừu tượng mang lại cho bạn sự cụ thể hơn.
Như trong, các lớp trừu tượng có thể có các hàm tạo nhưng các giao diện không thể. Vì vậy, một lần nữa, tôi muốn biết, Nếu các lớp trừu tượng là cụ thể hơn, và có thể có các nhà thầu,
và anyways Java đã giới thiệu vấn đề kim cương, tại sao chúng ta nên có giao diện bây giờ? Các lớp trừu tượng sẽ không đủ tốt để đứng một mình cho nhiều thừa kế?
thể trùng lặp của ([sự khác biệt giữa các lớp trừu tượng và giao diện trong Java 8? Là gì] http://stackoverflow.com/questions/22591499/what-are-the- khác biệt-giữa-trừu tượng-lớp-và-giao diện-trong-java-8) – assylias
Bản sao này không trả lời câu hỏi của tôi. Vì vậy, tôi sẽ không coi đó là một bản sao. Hãy xem nhận xét thứ ba của câu trả lời JB Nizet để biết thêm thông tin về câu hỏi của tôi. –