Diferencia clave: los métodos abstractos son los métodos que se declaran pero no tienen ninguna implementación. Los métodos virtuales se utilizan para una implementación del polimorfismo basado en tipos. La clase derivada tiene la flexibilidad de volver a implementar el método virtual de la clase base mediante el uso de la palabra clave 'sobrescribir'.
Por ejemplo -
clase abstracta pública exampleAbstractClass
{
resumen de vacío público exampleabstractMethod ();
vacío virtual público nonAbstractMethod ()
{
Console.WriteLine ("La implementación se define en el método");
}
clase normalNonAbstractClass: exampleAbstractClass
{
anulación pública void exampleabstractMethod ()
{
Console.WriteLine ("Sobrescribiendo el método de exploración de la clase exampleAbstractClass");
}
}
clase base
{
Prueba de vacío virtual pública ()
{
Console.WriteLine ("Base.Test");
}
}
clase Derivado: Base
{
anulación pública de prueba de vacío ()
{
Console.WriteLine ("Derived.Test");
}
}
Los métodos virtuales se utilizan para una implementación del polimorfismo basado en tipos. La clase derivada tiene la flexibilidad de volver a implementar el método virtual de la clase base mediante el uso de la palabra clave de reemplazo. Tanto virtual como abstract no se pueden usar junto con modificadores estáticos o virtuales o de anulación.
Comparación entre el método virtual y el método abstracto:
Método virtual | Método abstracto | |
Definición | Los métodos virtuales se utilizan para una implementación del polimorfismo basado en tipos. | Los métodos abstractos son los métodos que se declaran pero no tienen ninguna implementación. |
Implementación | Sí, puede tener implementación. | No, no puede tener ninguna implementación. |
Necesita ser anulado | No obligatorio | Obligatorio |
Palabra clave utilizada para distinguirla de otros tipos de métodos. | Virtual | Resumen |
Clase | La clase que contiene el método virtual puede ser instanciada. | La clase que contiene el método abstracto no puede ser instanciada. Sólo se puede heredar. |
Alcance | El alcance del método virtual solo para miembros. | Resumen del alcance del método a miembros y clases. |
Método a ejecutar (tipo de clase base de objeto) | La implementación principal se llamará solo en el caso de que no se proporcione ninguna implementación en la clase concreta. | Implementación concreta |
Método a ejecutar (tipo de clase objeto-concreto) | Implementación concreta | Implementación concreta |