2012-11-07 20 views

Trả lời

22

Bạn không và bạn không thể.

Nếu bạn muốn hiển thị lớp học là public, loại cơ sở phảipublic. Một tùy chọn khác là có một số public interface và chỉ hiển thị loại thông qua interface (có lẽ là với phương thức nhà máy ở đâu đó để tạo phiên bản).

Một tùy chọn cuối cùng là đóng gói loại cơ sở thay vì kế thừa nó.

+0

Hoặc tất cả các phương pháp/thuộc tính trên lớp cơ sở cần được bảo vệ? nhưng bản thân lớp đó là công khai? – Liam

+0

@Liam phụ thuộc vào những gì bạn đang cố gắng bảo vệ; ví dụ: nếu ai đó bên ngoài có thể * phân lớp *, họ vẫn có quyền truy cập vào các phương thức đó. –

+0

đúng, sẽ làm việc nội bộ? Không chắc? – Liam

1

Chỉ cần làm rõ những gì tôi đã nói trong ý kiến ​​về câu trả lời @Marc Gravel của bạn thể

public ChildClass : ParentClass 
{ 

} 

public ParentClass 
{ 
    internal void MethodIdontWantToExpose() 
    { 

    } 

} 

Điều đó nói rằng một interface có lẽ là giải pháp tốt nhất

9

Làm cho nó public, làm cho tất cả nhà thầu internal (nếu bạn đang sử dụng hàm tạo mặc định, hãy thêm một hàm tạo parameterless để ghi đè).

Sau đó, trong khi công khai và không được niêm phong, nó không thể được phân loại phụ bằng mã bên ngoài.