Cómo usar el método virtual en C#

Cómo usar el método virtual en C#
Los métodos virtuales son una característica importante de los lenguajes de programación orientados a objetos como C#. Permiten que las clases definan métodos que pueden ser anulados por clases derivadas, proporcionando una forma para que las clases personalicen el comportamiento de sus clases de padres.

¿Qué es el método virtual en C#?

Los métodos virtuales en C# son métodos que se declaran en una clase base y pueden ser anulados por clases derivadas. En otras palabras, un método virtual es un método que se puede redefinir en una subclase, aquí está la sintaxis para ello:

Vacío virtual público ()

// Implementación del método

La palabra clave virtual indica que este método puede ser anulado por una clase derivada y cuando una clase derivada anula un método virtual, proporciona su propia implementación del método.

Para anular un método virtual en una clase derivada, incluye la palabra clave de anulación en la firma del método y a continuación se encuentra la sintaxis:

anulación pública nula ()

// Implementación del método

La palabra clave de anulación indica que este método está anulando un método virtual en la clase principal. Aquí hay un fragmento de código de ejemplo que demuestra el uso de métodos virtuales en C#:

usando el sistema;
// Definir una clase base llamada Cálculo
cálculo de clase

// Definir un método ADD virtual que toma dos enteros y devuelve un resultado entero
público virtual int add (int x, int y)

return x + y; // devuelve la suma de los dos enteros de entrada


// Definir una clase derivada llamada CustomCalculation que hereda del cálculo
clase CustomCalculation: cálculo

// anular el método ADD de la clase base
Public Anulación int add (int x, int y)

if (x> 10 || y> 10) // Si alguno de los enteros de entrada es mayor que 10

regreso x - y; // reste y de x y devuelve el resultado

más // Si ninguno de los enteros de entrada es mayor que 10

base de retorno.Agregar (x, y); // llame al método ADD de la clase base para devolver la suma de los dos enteros de entrada



programa de clase

static void main (string [] args)

// crear una instancia de la clase base con nombre de cálculo
Cálculo calc = nuevo cálculo ();
// Crear una instancia de la clase derivada llamada CustomCalcational
CustomCalCatationCustomCalc = new CustomCalculation ();
// Llame al método de suma virtual en el objeto de cálculo base
int resultado1 = Calc.Agregar (5, 7);
Consola.WriteLine ($ "resultado1: resultado1"); // Salida: resultado1: 12
// Llame al método ADD de anulación en el objeto CustomCalculation
int dult2 = customCalc.Agregar (12, 7);
Consola.WriteLine ($ "result2: result2"); // Salida: resultado2: 5

En este ejemplo, tenemos una clase base llamada cálculo con un método virtual llamado ADD que simplemente agrega dos enteros juntos. También tenemos una clase derivada llamada CustomCalculation que anula el método ADD, pero solo cuando la suma de los dos números es mayor que 10.

En el método ADD anulado, verificamos si X o Y es mayor de 10. Si esta condición es verdadera, devolvemos la diferencia entre x e y y si la condición es falsa, llamamos a la implementación base del método Agregar usando la palabra clave base.

En el método principal, creamos un objeto de cálculo y un objeto CustomCalculation. Primero llamamos al método de agregado virtual en el objeto de cálculo base, pasando 5 y 7 como argumentos. Esto debería dar como resultado una suma de 12 y luego llamamos al método de agregado anulado en el objeto CustomCalculation, pasando 12 y 7 como argumentos. Esto debería dar lugar a una diferencia de 5, ya que la suma de los dos números es mayor que 10.

Como puede ver, el método ADD anulado en la clase CustomCalculation solo se llama cuando la condición es falsa. Cuando la condición es verdadera, el método anulado proporciona una implementación diferente del método ADD que resta el segundo número desde el primero, a continuación se produce la salida del código:

Conclusión

El método virtual en C# proporciona una forma para que las clases definan métodos que se pueden personalizar mediante clases derivadas. Al marcar un método como virtual, permite que las clases derivadas proporcionen su propia implementación del método y la suya es una característica poderosa de la programación orientada a objetos que permite una mayor flexibilidad y reutilización en el código.