2011-05-18 14 views

Respuesta

28

Debido a que la interfaz es en términos de crudo 'una vista al mundo exterior' y puesto que es para el mundo exterior, no tiene sentido hacer sus miembros protegidos o privada.

O, en otras palabras, es un contrato con el mundo exterior que especifica que la clase que implementa esta interfaz hace un cierto conjunto de cosas. Entonces, ocultar parte de eso no tiene sentido.

Sin embargo, las interfaces mismas pueden tener especificadores de acceso como protected o internal etc. Limitando así el mundo exterior a un subconjunto de 'todo el mundo exterior'.

+1

¿Qué sucede si desea que una clase pública implemente una interfaz interna, pero que solo exponga internamente a los miembros de esa interfaz, mientras expone públicamente a algunos de sus miembros que no son de la interfaz? Me pregunto por qué Microsoft lo hubiera prohibido. – Panzercrisis

5

Los miembros de la interfaz siempre son públicos porque el objetivo de una interfaz es permitir que otros tipos accedan a una clase o estructura. No se pueden aplicar modificadores de acceso a los miembros de la interfaz.

4

Todos los métodos de interfaz son públicos. No puede crear un modificador de acceso en la interfaz. Si quieres usar uno, usa la clase Abstracta.

0

interfaces son la codificación contratos, esta es la misma razón que no permitirá que otro entonces cualquier modificador de acceso público en la que es la firma de métodos. Pero una interfaz en sí misma puede ser interna pero no privada o protegida, interna permite el acceso dentro del ensamblaje, lo cual está perfectamente bien.

2

Esto se debe a la naturaleza de la interfaz. Una interfaz, por definición, es una especificación. Una regla en las especificaciones de .NET dicta que una clase que implemente una interfaz tendrá que implementar todos los miembros de esa interfaz. Ahora, si marcamos un miembro como privado, la clase implementadora no puede implementar ese miembro en particular.

Cuestiones relacionadas