Tôi có một số câu hỏi cơ bản về các lớp/phương thức trừu tượng.Tôi biết sử dụng cơ bản các lớp trừu tượng là tạo các khuôn mẫu cho các lớp trong tương lai. Nhưng có sử dụng nhiều hơn của họ? Khi nào bạn nên thích chúng hơn các giao diện và khi nào thì không? Ngoài ra khi nào các phương thức trừu tượng có ích?Khi nào và Tại sao sử dụng các lớp/phương pháp trừu tượng?
Trả lời
Tôi biết việc sử dụng cơ bản các lớp trừu tượng là tạo mẫu cho các lớp học trong tương lai. Nhưng có sử dụng nhiều hơn nữa của chúng không?
Không chỉ bạn có thể xác định mẫu cho trẻ em, mà lớp học trừu tượng mang lại lợi ích bổ sung cho phép bạn xác định chức năng mà lớp con bạn có thể sử dụng sau này.
Bạn không thể cung cấp triển khai cho Giao diện.
Khi nào bạn thích chúng hơn giao diện và khi nào thì không?
Lớp trừu tượng phù hợp nếu bạn muốn cung cấp chi tiết triển khai cho con mình nhưng không muốn cho phép thể hiện lớp học trực tiếp (cho phép bạn định nghĩa một phần).
Nếu bạn chỉ muốn xác định hợp đồng cho Đối tượng cần theo dõi, sau đó sử dụng Giao diện.
Ngoài ra khi nào phương pháp trừu tượng có ích?
Phương pháp trừu tượng hữu ích giống như cách xác định các phương thức trong Giao diện hữu ích. Đó là một cách để các nhà thiết kế của lớp Tóm tắt nói "bất kỳ đứa trẻ nào của tôi PHẢI thực hiện phương pháp này".
"Bạn không thể cung cấp triển khai cho Giao diện". Bạn có thể trong Java 8 với một phương thức mặc định. –
Ở cấp độ rất cao:
Sự trừu tượng thuộc loại nào xảy ra để tách mối quan tâm. Mã "Client" của một trừu tượng không quan tâm đến việc hợp đồng được hiển thị như thế nào bởi sự trừu tượng được đáp ứng. Bạn thường không quan tâm nếu một lớp chuỗi sử dụng một thực thi lưu trữ nội bộ được kết thúc bằng bộ đệm rỗng hoặc được theo dõi theo chiều dài bộ đệm, chẳng hạn. Encapsulation ẩn các chi tiết, nhưng bằng cách tạo các lớp/phương thức/etc. trừu tượng, bạn cho phép triển khai thay đổi hoặc để triển khai mới được thêm vào mà không ảnh hưởng đến mã máy khách.
đọc bài viết sau http://mycodelines.wordpress.com/2009/09/01/in-which-scenario-we-use-abstract-classes-and-interfaces/
lớp Abstract
-> Khi bạn có một yêu cầu nơi lớp cơ sở của bạn nên cung cấp thực hiện mặc định của một số phương pháp trong khi các phương pháp khác nên mở để bị ghi đè bởi các lớp học trẻ em sử dụng các lớp trừu tượng.
Ví dụ: một lần nữa lấy ví dụ về lớp xe ở trên. Nếu chúng ta muốn tất cả các lớp bắt nguồn từ Phương tiện để triển khai phương thức Drive() theo cách cố định trong khi các phương pháp khác có thể bị ghi đè bởi các lớp con.Trong trường hợp như vậy, chúng tôi triển khai lớp học Lớp xe là lớp trừu tượng với việc triển khai Drive trong khi để các phương pháp/thuộc tính khác trừu tượng để chúng có thể bị ghi đè bởi các lớp con.
-> Mục đích của lớp tóm tắt là để cung cấp định nghĩa chung cho lớp cơ sở mà nhiều lớp học có thể chia sẻ .
Ví dụ một thư viện lớp học có thể xác định một lớp trừu tượng được sử dụng như một tham số với nhiều chức năng của mình và yêu cầu các lập trình viên sử dụng thư viện để cung cấp thực hiện riêng của họ lớp bằng cách tạo ra một lớp dẫn xuất.
Sử dụng một lớp trừu tượng
Khi tạo một thư viện lớp mà sẽ được phân phối rộng rãi hoặc tái sử dụng, đặc biệt đối với khách hàng, sử dụng một lớp trừu tượng trong ưu tiên cho một giao diện ; bởi vì, nó đơn giản hóa phiên bản . Đây là thực tế được sử dụng bởi nhóm Microsoft đã phát triển Thư viện lớp cơ sở. (COM là được thiết kế xung quanh giao diện.) Sử dụng lớp trừu tượng để xác định lớp cơ sở chung cho một loại gia đình. Sử dụng lớp trừu tượng để cung cấp hành vi mặc định . Phân lớp chỉ có một lớp cơ sở trong một hệ thống phân cấp mà lớp thuộc về mặt logic.
Thông thường, người dùng sử dụng lớp trừu tượng để cung cấp một số chức năng không đầy đủ sẽ được phân lớp bởi lớp con cụ thể. Nó có thể cung cấp các phương thức được sử dụng bởi các lớp con của nó; nó cũng có thể đại diện cho một nút trung gian trong phân cấp lớp, đại diện cho một nhóm phổ biến của các lớp con cụ thể, phân biệt chúng theo một cách nào đó từ các lớp con khác của lớp cha của nó. Vì một giao diện không thể lấy được từ một lớp, đây là một tình huống khác mà một lớp (trừu tượng hoặc khác) sẽ là cần thiết, so với một giao diện.
Nguyên tắc chung là chỉ có các nút lá của một hệ thống phân cấp lớp mới được khởi tạo. Làm cho các nút không phải là lá trừu tượng là một cách dễ dàng để đảm bảo điều đó.
Lớp/phương pháp trừu tượng thường được sử dụng khi một lớp cung cấp một số chức năng cấp cao nhưng loại bỏ các chi tiết nhất định sẽ được triển khai bởi các lớp dẫn xuất. Làm cho lớp trừu tượng/phương thức đảm bảo rằng nó không thể được sử dụng riêng của nó, nhưng phải chuyên biệt để xác định các chi tiết đã được bỏ ra khỏi việc thực hiện mức cao.Điều này thường được sử dụng nhiều nhất với mô hình phương pháp mẫu:
Nếu bạn đang tìm kiếm tốt Công nghệ phần mềm và Thiết kế tài liệu hướng dẫn tôi thực sự khuyên bạn có một cái nhìn đó:
https://prof.hti.bfh.ch/index.php?id=3494&L=2
Giới thiệu về các lớp giới thiệu abstact:
https://prof.hti.bfh.ch/fileadmin/home/due1/uml_dp/script/udp-advancedclassmodeling-200910.pdf
.210cổ vũ
Daniel
- 1. khi nào nên sử dụng mẫu nhà máy trừu tượng?
- 2. Phương pháp trừu tượng ghi đè phương pháp trừu tượng
- 3. Khi nào nên sử dụng cây cú pháp trừu tượng hoặc cụ thể?
- 4. Khi nào sử dụng giao diện hoặc lớp trừu tượng? Khi nào sử dụng cả hai?
- 5. Không chắc chắn khi nào nên sử dụng thuộc tính trừu tượng và khi không
- 6. “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
- 7. đặc điểm và các loại trừu tượng
- 8. khác biệt giữa các phương pháp ảo và trừu tượng
- 9. Tại sao lớp HttpServlet được khai báo là trừu tượng?
- 10. Tại sao sử dụng lớp trừu tượng trống thay vì giao diện?
- 11. Cây cú pháp trừu tượng là gì?
- 12. Sự cố khi sử dụng nhà máy trừu tượng
- 13. Tại sao android.app.Activity không trừu tượng theo thiết kế?
- 14. Cách sử dụng Reader Monad khi duyệt qua một cây cú pháp trừu tượng
- 15. Phương pháp Javascript CollectGarbage() là gì? Khi nào và tại sao nó nên được sử dụng?
- 16. khi nào và tại sao sử dụng nhiều NSManagedObjectContext?
- 17. Khi nào và tại sao sử dụng malloc?
- 18. Khi nào tôi nên sử dụng kiểu trừu tượng trong các hệ thống nhúng
- 19. Sử dụng từ khóa ghi đè để triển khai các phương pháp trừu tượng
- 20. Tại sao chúng ta cần giao diện khi lớp trừu tượng tồn tại?
- 21. Tại sao khai báo các lớp tĩnh như niêm phong và trừu tượng trong C#?
- 22. Lớp học có thể trừu tượng ngay cả khi không có bất kỳ phương pháp trừu tượng nào không? Nếu có, Whats sử dụng?
- 23. Sử dụng WCF với các lớp trừu tượng
- 24. Làm thế nào để nghe một phương pháp trừu tượng?
- 25. Khi nào sử dụng các thành phần Seaside và khi nào thì sử dụng các đối tượng render đơn giản?
- 26. Sử dụng Generics trong lớp trừu tượng
- 27. Tại sao sử dụng PHP OOP trên các chức năng cơ bản và khi nào?
- 28. Tại sao tuyên bố giao diện là trừu tượng?
- 29. Các nhà máy trừu tượng có sử dụng "mới" không?
- 30. 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?
thể trùng lặp của [Interface vs class Base] (http://stackoverflow.com/questions/56867/interface-vs-base-class) - và có rất nhiều ** ** nhiều hơn với các câu trả lời có chất lượng rất cao: chỉ cần tìm kiếm trên 'lớp trừu tượng giao diện'. –