Cách xác định lớp phải kế thừa? trong C#Cách xác định phải thừa kế lớp
Trả lời
Bạn đánh dấu lớp là abstract
(đây là tương tự C# với VB.NET Must Inherit
).
Điều này sẽ đảm bảo nó không thể được khởi tạo trực tiếp.
Từ bài viết MSDN liên kết:
Các modifier trừu tượng chỉ ra rằng điều được sửa đổi có thực hiện còn thiếu hoặc không đầy đủ. Công cụ sửa đổi trừu tượng có thể được sử dụng với các lớp, phương thức, thuộc tính, trình lập chỉ mục và các sự kiện. Sử dụng công cụ sửa đổi trừu tượng trong khai báo lớp để chỉ ra rằng một lớp được dự định chỉ là lớp cơ sở của các lớp khác. Các thành viên được đánh dấu là trừu tượng, hoặc được bao gồm trong một lớp trừu tượng, phải được thực hiện bởi các lớp bắt nguồn từ lớp trừu tượng.
(tôi nhấn mạnh)
nhưng khi bạn định nghĩa một lớp là trừu tượng thì điều đó có nghĩa là nó phải được kế thừa không? – thechmodmaster
@thechmodmaster - Vâng, bạn không thể tạo một thể hiện của lớp như vậy trực tiếp. Bạn chỉ có thể tạo các cá thể của các lớp thừa hưởng từ nó. Nếu điều đó phù hợp với khái niệm của bạn về "phải được thừa kế", tôi không biết. Nó phù hợp với tôi. – Oded
Nghe có vẻ hợp lý với tôi .... một câu hỏi của nó từ một công việc xen kẽ – thechmodmaster
Bạn có thể định nghĩa một lớp như abstract
, hoặc cho nó một bảo vệ chỉ constructor. abstract
là tốt hơn.
Sử dụng công cụ sửa đổi abstract
.
public abstract class MyClass()
{
...
}
Không thể needness enforse của nguồn gốc hoặc thực hiện trong mã, nếu rằng là một câu hỏi.
Nhưng:
Bạn có thể xác định một interface
để buộc người tiêu dùng để thực hiện nó.
Hoặc bạn có thể xác định abstract class
chỉ thành viên trừu tượng để buộc người tiêu dùng ghi đè tất cả trong số họ.
Hy vọng điều này sẽ hữu ích.
Vâng, đó là những gì tôi nghĩ: làm thế nào để xác định một lớp theo cách mà sẽ yêu cầu kế thừa nó. bạn muốn đảm bảo rằng lớp này sẽ được kế thừa. – thechmodmaster
Nếu bạn muốn tạo một lớp, lớp đó phải được kế thừa, bạn sẽ cần phải đánh dấu lớp đó bằng công cụ sửa đổi abstract
.
public abstract MyClass
{
}
- 1. Xác thực thông thạo. Thừa kế các lớp xác nhận
- 2. C# Thừa kế lớp
- 3. Tôi có thể xác định yêu cầu giao diện/phụ thuộc/kế thừa kế thừa không?
- 4. Set lớp thừa kế sau delcaration lớp HOẶC thiết lập lớp thừa kế trên lớp const_set
- 5. Thừa kế lớp Ruby và định nghĩa gia tăng
- 6. Thừa kế bảng đơn hoặc thừa kế bảng lớp?
- 7. Thừa kế tài liệu trong kế thừa lớp Python
- 8. thừa kế lớp vỏ Scala
- 9. Haskell lớp kế thừa kiểu
- 10. C++ Không xác định Tham khảo vtable và thừa kế
- 11. thừa kế xác thực symfony2
- 12. Thừa kế lớp trong Python
- 13. Thừa kế lớp trong Javascript
- 14. file Node coffeescript lớp và thừa kế
- 15. Không thể sử dụng lớp Meta của mô hình Django kế thừa để định cấu hình trường được xác định trong mô hình trừu tượng được thừa kế
- 16. Kế thừa nhiệm vụ Gradle thừa kế
- 17. Mặc định lớp kế thừa quyền truy cập
- 18. Thừa kế bảng lớp trong Rails 3
- 19. Cách chính xác để thừa kế từ std :: exception
- 20. Thừa kế C#. lớp được thừa kế từ lớp cơ sở
- 21. Java thừa kế vs C# thừa kế
- 22. thừa kế trên thuộc tính lớp (python)
- 23. Thừa kế lớp UIViewController và XIB
- 24. iPhone - UIImagePickerControllerKho thừa kế kế thừa
- 25. Các lớp học kế thừa từ lớp trừu tượng
- 26. C#: Thừa kế thừa kế
- 27. Cách lấy ITypeDescriptorContext và IServiceProvider trong lớp ControlDesigner kế thừa
- 28. lớp con kế thừa giao diện chung
- 29. Grails/Groovy miền lớp thừa kế đúc
- 30. Thừa kế ảo thuần túy, đa thừa kế và C4505
Đến từ VB.Net? Chúc may mắn! Cũng được đề cập trong http://stackoverflow.com/questions/5189405/difference-between-mustinherit-and-abstract-class – dash