Como usar o método virtual em c#

Como usar o método virtual em c#
Os métodos virtuais são uma característica importante das linguagens de programação orientadas a objetos como C#. Eles permitem que as aulas defina métodos que podem ser substituídos por classes derivadas, fornecendo uma maneira de as aulas personalizam o comportamento de suas classes pais.

O que é método virtual em C#

Os métodos virtuais em C# são métodos declarados em uma classe base e podem ser substituídos por classes derivadas. Em outras palavras, um método virtual é um método que pode ser redefinido em uma subclasse, aqui está a sintaxe:

vazio virtual público ()

// Implementação do método

A palavra -chave virtual indica que esse método pode ser substituído por uma classe derivada e quando uma classe derivada substitui um método virtual, fornece sua própria implementação do método.

Para substituir um método virtual em uma classe derivada, você inclui a palavra -chave de substituição na assinatura do método e abaixo é a sintaxe:

Substituição pública vazia ()

// Implementação do método

A palavra -chave de substituição indica que esse método está substituindo um método virtual na classe pai. Aqui está um exemplo de código de código que demonstra o uso de métodos virtuais em C#:

usando o sistema;
// Defina uma classe base denominada cálculo
Cálculo da classe

// Defina um método de adição virtual que leva dois números inteiros e retorna um resultado inteiro
Public Virtual Int Add (int x, int y)

retornar x + y; // retorna a soma dos dois números inteiros de entrada


// Defina uma classe derivada chamada CustomCalculation que herda do cálculo
Classe CustomCalculation: Cálculo

// substitui o método de adição da classe base
substituição pública int add (int x, int y)

se (x> 10 || y> 10) // se um dos números inteiros de entrada for maior que 10

retornar x - y; // subtrair y de x e retornar o resultado

else // se nenhum dos números inteiros de entrada for maior que 10

Base de retorno.Add (x, y); // Ligue para o método de adição da classe base para retornar a soma dos dois números inteiros de entrada



programa de classe

estático void main (string [] args)

// Crie uma instância da classe base nomeada cálculo
Cálculo calc = novo cálculo ();
// Crie uma instância da classe derivada chamada CustomCalculation
CustomCalCulationCustomCalc = new CustomCalCulation ();
// Chame o método de adição virtual no objeto de cálculo base
int resultado1 = calc.Add (5, 7);
Console.WriteLine ($ "Result1: Result1"); // saída: resultado1: 12
// Chame o método de adição substituído no objeto CustomCalculocation
int resultado2 = customCalc.Add (12, 7);
Console.WriteLine ($ "Result2: Result2"); // saída: resultado2: 5

Neste exemplo, temos uma classe base chamada cálculo com um método virtual chamado Add que simplesmente adiciona dois números inteiros juntos. Também temos uma classe derivada chamada CustomCalculation que substitui o método ADD, mas somente quando a soma dos dois números é maior que 10.

No método de adição substituído, verificamos se x ou y é maior que 10. Se essa condição for verdadeira, retornamos a diferença entre x e y e se a condição for falsa, chamamos a implementação base do método Add usando a palavra -chave base.

No método principal, criamos um objeto de cálculo e um objeto CustomCalculation. Primeiro, chamamos o método de adição virtual no objeto de cálculo base, passando em 5 e 7 como argumentos. Isso deve resultar em uma soma de 12 e, em seguida. Isso deve resultar em uma diferença de 5, uma vez que a soma dos dois números é maior que 10.

Como você pode ver, o método de adição substituído na classe CustomCalculation é chamado apenas quando a condição é falsa. Quando a condição é verdadeira, o método substituído fornece uma implementação diferente do método ADD que subtraia o segundo número desde o primeiro, abaixo é a saída do código:

Conclusão

O método virtual em C# fornece uma maneira de as aulas definirem métodos que podem ser personalizados por classes derivadas. Ao marcar um método como virtual, você permite que classes derivadas forneçam sua própria implementação do método e dele é uma característica poderosa da programação orientada a objetos que permite maior flexibilidade e reutilização no código.