Tôi biết, chúng tôi không thể khởi tạo giao diện hoặc lớp trừu tượng trong java ngoại trừ sử dụng phương thức lớp ẩn danh nhưng lý do lý do đằng sau nó là gì?Tại sao chúng ta không thể khởi tạo một giao diện hoặc một lớp trừu tượng trong java mà không có một phương thức lớp ẩn danh?
Trả lời
Bạn không thể khởi tạo giao diện hoặc lớp trừu tượng vì nó sẽ thách thức mô hình hướng đối tượng.
Giao diện đại diện cho hợp đồng - lời hứa rằng người triển khai giao diện sẽ có thể thực hiện tất cả những điều này, hoàn thành hợp đồng.
Các lớp trừu tượng là một ý tưởng tương tự, trong đó chúng đại diện cho một hợp đồng chưa được thực hiện, hứa hẹn có thể làm mọi thứ, ngoại trừ giao diện chúng có một số chức năng hoặc trường được xác định nhưng cần điền trước khi chúng có thể sử dụng.
Đơn giản, trong một chương trình hướng đối tượng tốt, bạn không bao giờ muốn khởi tạo lớp trừu tượng hoặc giao diện. Nếu bạn làm, thiết kế có lẽ là sai.
(Lớp ẩn danh thực sự không phải là trừu tượng, chỉ cần chúng không cần phải đặt tên, vì vậy chúng có vẻ là 'giao diện thô' nhưng thực ra chúng thực hiện giao diện không có tên Đó là sự hiểu biết của tôi, ít nhất.)
Đây là giải thích cơ bản mà không có khái niệm sâu hơn.
Interface
không có phương pháp thực hiện, vì vậy không có mục đích để nhanh chóng nó là 'không có gì' sẽ xảy ra khi gọi một phương phápAbstract
lớp có thể cóabstract
khai phương pháp, mà là giống như một phương pháp giao diện với không thực hiện .
Bạn không thể khởi tạo giao diện hoặc lớp trừu tượng vì một số phương pháp của chúng có thể không có bất kỳ định nghĩa nào.
Có thể làm rõ rằng * none * sẽ có giao diện. – ChiefTwoPencils
- 1. Tại sao chúng ta cần giao diện khi lớp trừu tượng tồn tại?
- 2. Chúng ta có thể tạo một thể hiện của một giao diện trong Java không?
- 3. Tại sao một lớp trừu tượng thực hiện một giao diện có thể bỏ lỡ việc khai báo/thực hiện một trong các phương thức của giao diện?
- 4. Không thể tạo một thể hiện của lớp trừu tượng hoặc giao diện
- 5. Tại sao có một công cụ sửa đổi truy cập riêng trong một lớp trừu tượng trong Java, mặc dù chúng ta không thể tạo một thể hiện của một lớp trừu tượng?
- 6. Phương thức giao diện Java Phương pháp: Mỗi lớp có thực hiện một giao diện không?
- 7. Tại sao chúng ta không được phép chỉ định một hàm tạo trong một giao diện?
- 8. Chúng ta có thể tự động gọi một phương thức giao diện Java với một tham số chung không?
- 9. Chúng ta có thể tạo một đối tượng của một giao diện không?
- 10. Tôi có thể khởi tạo một lớp ẩn danh trong hàm tạo của lớp ngoài không?
- 11. “Không thể khởi tạo lớp trừu tượng ... với các phương pháp trừu tượng” trên lớp học mà không cần phải có bất kỳ phương pháp trừu tượng
- 12. Tại sao các phương thức giao diện C# không được khai báo trừu tượng hoặc ảo?
- 13. Phương thức khởi tạo riêng trong lớp trừu tượng
- 14. Java: mở rộng một lớp và triển khai một giao diện có cùng phương thức
- 15. Java - Giao diện, khởi tạo một giao diện?
- 16. Phương pháp tĩnh trong giao diện/lớp trừu tượng
- 17. Có một thể hiện của siêu lớp được tạo khi chúng ta khởi tạo một đối tượng không?
- 18. Có một cú pháp để tạo một lớp con ẩn danh trong C# không?
- 19. C# ẩn danh triển khai giao diện (hoặc lớp trừu tượng)
- 20. Tại sao có thể gọi phương thức trên phương thức giao diện Java? [So sánh]
- 21. Tại sao chúng ta không thể khởi tạo thành viên lớp học khi khai báo?
- 22. Giao diện Java có phải là một lớp trừu tượng không?
- 23. Việc sử dụng tạo một hàm tạo cho một lớp trừu tượng trong Java là gì?
- 24. Giao diện và lớp trừu tượng chỉ với các phương thức trừu tượng ảo có giống nhau không?
- 25. Mocking một cuộc gọi trên một phương pháp công cộng của một lớp trừu tượng mà không cần lớp con của lớp trừu tượng, sử dụng Mockito prefererably
- 26. Lớp trừu tượng, tại sao chúng ta không thể khai báo thành viên lớp val và var riêng?
- 27. Bạn có thể giả lập một đối tượng thực hiện một giao diện VÀ một lớp trừu tượng không?
- 28. lớp trừu tượng không thực hiện giao diện
- 29. Builder design pattern - Không có lớp trừu tượng/giao diện
- 30. Tạo giao diện cho mẫu lớp trừu tượng trong C++
Giao diện của bạn có bất kỳ mã nào để sử dụng không? – ChiefTwoPencils