2012-06-23 28 views

Trả lời

31

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)

+1

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

+1

@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

+0

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

4

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.

5

Sử dụng công cụ sửa đổi abstract.

public abstract class MyClass() 
{ 
    ... 
} 
1

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.

+0

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

3

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 
{ 
} 
Các vấn đề liên quan