2011-01-21 12 views

Respuesta

37

Virtuales y abstractos son casi lo mismo. Un método virtual tiene una implementación en la clase base que se puede anular opcionalmente, mientras que un método abstracto no se ha anulado y debe anularse en una clase secundaria. De lo contrario, son lo mismo. Elegir entre ellos depende de la situación. Si tienes una implementación básica, utilizas virtual. Si no lo hace, y necesita que cada descendiente lo implemente por sí mismo, elija abstract.

Los métodos de interfaz son implementaciones de un método que se declara en una interfaz que la clase implementa. Esto no tiene relación con los otros dos. Creo que un método puede ser tanto virtual como de interfaz. La ventaja de las interfaces es que declaras una interfaz (duh) que puede implementarse mediante dos clases totalmente diferentes. De esta forma, puede ejecutar el mismo código en dos clases diferentes, siempre que los métodos que desea llamar se declaren en una interfaz que comparten.

+4

para obtener más detalles sobre esto, vea http://stackoverflow.com/a/3621600/8151. tl; dr: los métodos de interfaz se declaran virtuales en el IL emitido. – cori

Cuestiones relacionadas