C# Virtual

C# Virtual
Uma função virtual em C# pode ser substituída em subclasses. Uma função virtual em C# tem implementação de classe pai e filho. Sempre que a funcionalidade principal de um método é quase a mesma, no entanto, a subclasse requer capacidade adicional e é utilizada. A frase virtual é usada para definir uma função virtual na superclasse, que é então substituída pela frase de substituição na subclasse. Sempre que uma função é especificada como uma função virtual em uma superclasse, a subclasse pode escolher se deve ou não substituí -la. A metodologia de substituição permite que uma função tenha muitas formas. Como resultado, é uma boa ilustração do polimorfismo. Vamos começar usando alguns dos exemplos C# para elaborar o funcionamento da palavra -chave "virtual" para criar e usar as funções virtuais no código. Temos que criar um arquivo C# no qual possamos adicionar o código para funções virtuais com a consulta "Touch" como abaixo.

Exemplo # 01

Vamos começar com o exemplo mais básico de usar o método virtual em C#. Utilizaremos a biblioteca do sistema em nosso código na primeira linha usando a palavra -chave "usando" conforme exibido. Depois disso, criamos uma classe de base pública chamada "pai" usando a palavra -chave "classe". Esta classe base contém uma única função chamada "show" do tipo de retorno vazio e modificador de acesso público, i i.e., função virtual.

Esta função virtual contém uma declaração simples de função writeLine () da classe de console para imprimir a frase de texto simples sobre execução em nossa tela, i i.e., “Método virtual na classe dos pais”. Outra classe pública chamada "Child" foi criada depois disso. Como mostrado, esta classe foi derivada da classe "pai". O método "show" foi implementado nele que foi substituído da classe base "pai" usando a palavra -chave "substituição" seguida pelo tipo de retorno "void" e começou com o modificador de acesso "público".

Como essa função virtual foi substituída da classe base, ela deve conter alguma implementação extra. Assim, estamos usando a declaração WriteLine () da classe de console aqui para exibir uma nova string de texto no shell declarando “Método virtual substituído na classe infantil”. As funções da classe dos pais e da criança são de mesmo nome, mas uma implementação um pouco diferente. Toda essa implementação funcionará depois de usar o método main () no código. Então, criamos uma nova classe independente chamada "novo" com a palavra -chave "classe". Esta classe contém um método do tipo estático principal () com um tipo de retorno vazio. A execução começou a criar um objeto de classe pai "O1" com a palavra -chave "nova" seguida pelo nome da classe. Usamos este novo objeto O1 para chamar a função virtual de "show" da classe pai. Depois disso, criamos outro objeto O2 para a classe infantil usando a palavra -chave "novo", começando com o nome da classe base e terminando com o nome da classe infantil. Isso mostra que a herança real está ocorrendo no código C#. O objeto de classe infantil "O2" foi usado para chamar a função virtual de "show" substituída da classe infantil. A chamada de função não deve ser misturada ao executar o método principal (). Além disso, devemos obter a função show () da classe pai executada primeiro e depois a função show () da função da classe infantil. A classe New terminou aqui e nosso código está concluído agora.

Depois de salvar esse código no editor de texto, retornamos ao terminal, pois nosso código precisa ser compilado com o compilador "MCS" C#. Após a compilação bem -sucedida, tentamos a execução de seu arquivo "exe" que acaba de ser criado na pasta doméstico com o tempo de execução "mono" de C#. Ele executou o código e exibiu a string do método virtual da classe pai primeiro e depois o texto da string do método Substled Show () da classe infantil.

Exemplo # 02

Vamos tornar nosso código um pouco avançado e diferente do exemplo acima. Temos iniciado isso com o uso da biblioteca do sistema na primeira linha de código. Depois disso, utilizamos um teste de nomes de classes globais contendo mais três classes e uma função principal (). A primeira classe, "retângulo", é uma classe pai das outras duas classes. Declaramos 3 variáveis ​​públicas do tipo duplo "H", "W" e "R" com 10, 4 e 3, respectivamente. Uma variável constante de tipo duplo “P” foi declarada com um valor interno “PI” da matemática. Um método virtual "área ()" do tipo de retorno duplo foi definido aqui que vem retornando o resultado da multiplicação de "H" e "W" para a função principal () da classe de teste, I I.e., A área de um retângulo é, a altura se multiplica por largura. A classe "quadrado" foi derivada da classe "retângulo". Esta classe está substituindo a função virtual "área" de sua classe base e retornando o resultado da multiplicação de "H" e "H", I I.e., A área de um quadrado é um lado multiplicado pelo segundo lado ou altura em altura.

Em seguida, temos uma classe derivada “círculo” substituindo a função virtual “área” do retângulo de classe base. Esta função retorna o resultado da multiplicação de "p" e "r*r", eu.e., A área de um círculo é "pi" multiplicada pelo quadrado de um raio. Três classes foram definidas e implementadas no código totalmente. Agora, é a virada da função principal () de C# para iniciar sua execução e administrar gradualmente as aulas. Dentro do método Main () da classe de teste, criamos um objeto "O1" do retângulo da classe pai na primeira linha usando o nome de uma classe com a palavra -chave "nova".

Usando a classe Retângulo, criamos objetos O2 e O3 para classes derivadas quadradas e círculos, respectivamente. Três declarações de WriteLine () da classe do console foram usadas aqui para exibir a área de retângulo, quadrado e círculo, respectivamente. Para calcular a área para três formas, usamos os respectivos objetos de cada classe de forma. Esses objetos têm chamado suas respectivas funções virtuais definidas na classe Retângulo e substituídas nas classes derivadas, eu.e., Quadrado e círculo.

É hora de compilar este código C# recém -criado no shell com a instrução de comando “MCS”. Depois disso, use as instruções de tempo de execução mono para executar o arquivo "exe" que foi gerado como resultado da compilação. Na execução deste arquivo "exe" para o código, temos a área de retângulo, quadrado e círculo exibido em nossa tela, pois usamos a função virtual em uma classe e a substituímos nas classes derivadas.

Conclusão

Descrevemos como uma função virtual C# simples pode ser usada no código C# e substituído em suas subclasses. Demonstramos seu trabalho neste artigo com a ajuda de alguns exemplos. O primeiro exemplo ilustrou o uso da função virtual no programa de herança única, enquanto o segundo exemplo demonstra que, com a ajuda de várias heranças. Foi assim que mostramos como um método simples pode ser usado para executar vários cálculos com a definição única de uma função em C#.