Substituição de método em C # - Introdução - Passos Uso de Substituição

Índice:

Anonim

Introdução à Substituição de Método em C #

Substituir em termos simples significa a capacidade de modificar o comportamento dos métodos. Todos nós sabemos sobre a função Virtual em C ++, na qual invocamos a função da classe base na classe derivada. A substituição de método em C # fornece um privilégio semelhante à função Virtual em C ++. Para dar um exemplo dos pássaros, todos os pássaros terão o mesmo atributo que a mosca, a cor, etc. Mas os pássaros diferentes terão uma maneira diferente de voar e a cor variará de pássaro para pássaro. Assim, podemos substituir os métodos da classe base Bird em classes derivadas, como papagaio, pardal, corvo etc.

Como usar a substituição em c #?

Suponha que nosso aplicativo tenha o requisito de alterar o comportamento do método da classe base em uma classe derivada; então, devemos substituir o método. Para conseguir isso, precisamos criar o método na classe derivada com a mesma assinatura na classe base para executar uma tarefa diferente. Antes de aprendermos a usar a técnica de substituição, precisamos ter em mente os pontos abaixo.

  • Na programação C #, a Substituição de Método também é chamada de polimorfismo em tempo de execução, ligação tardia ou polimorfismo dinâmico.
  • Somente nas classes derivadas é possível substituir o método. Porque um método é substituído na classe derivada da classe base.
  • O método deve ser um método não virtual ou estático para uma substituição.
  • O modificador de nível de acesso do método de substituição e do método virtual deve ser o mesmo.

O método que é substituído pela declaração de substituição é chamado de método base substituído. Isso estará presente na classe base. O método base substituído pode ser abstrato, substituir ou virtual. Uma nova implementação chamada, método de substituição é herdada dessa classe base.

Usamos palavras-chave diferentes para substituir o método. Eles são,

1) Palavra-chave virtual

O compilador encontra a palavra-chave virtual no programa e entende que esse método pode ser substituído por qualquer uma de suas classes derivadas. A estrutura é como abaixo.

public virtual int EnemyHealth()
(
Console.WriteLine("Enemy Health");
)

2) Substituir palavra-chave

Isso está presente na classe derivada. Ele informa ao compilador que esse método está substituindo o método com o mesmo nome e assinatura na classe base.

public override int EnemyHealth ()
(
Console.WriteLine("Enemy 1");
)

Exemplo

Primeiro, vamos analisar o exemplo sem usar a palavra-chave Virtual e substituir.

Código:

class Birds
(
public void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)
class Parrot:Birds
(
public void Color( )
(
Console.WriteLine("Parrot is Green");
)
)
class ExecutionClass
(
public static void Main( )
(
Birds object;
object = new Birds( );
object .Color( );
object = new Parrot( );
object.Color( );
)
)

Resultado:

No exemplo acima, criamos um objeto da classe Derived Parrot e armazenamos sua referência na variável de referência objeto do tipo Birds.

Na próxima etapa, usando o objeto de variável de referência, chamamos a função Color (). Como objeto contém uma referência a um objeto do tipo Parrot, é natural que esperemos que a função Color () da classe Parrot seja executada. Mas nós estamos errados. A beleza da programação não permitirá que isso aconteça.

Para nossa surpresa, o que é executado é o método Color () da classe Birds. Isso ocorre porque a função é chamada com base no tipo de referência e não no que o objeto da variável de referência se refere. Como objeto é uma referência do tipo Birds, a função Color () da classe Birds será chamada, não importa a quem o objeto se refira.

Agora vamos reescrever o mesmo programa com virtual e substituir. Desta vez, iremos passo a passo para um melhor entendimento.

Crie uma classe base com qualquer nome. Aqui estou usando Birds. Escreva um método com a palavra-chave virtual. Este será o nosso método substituído, que substituiremos na classe herdada. Dentro do método, escreva alguma mensagem para imprimir no console.

class Birds
(
public virtual void Color( )
(
Console.WriteLine("Birds will have different Colors");
)
)

Agora crie mais uma classe Parrot Desta vez, vamos herdá-lo da classe base que criamos anteriormente, ou seja, Birds. Para herdar, usamos o símbolo ':'.

classe Parrot: Birds

Aqui, escreva uma função com a palavra-chave override e escreva alguma mensagem. Verifique se o nome e a assinatura do método na classe derivada correspondem ao nome e à assinatura do método na classe base.

public override void Color ( )
(
Console.WriteLine("Parrot is Green");
)

Precisamos de mais uma classe para executar a funcionalidade e verificar a substituição. Crie uma classe com qualquer nome. Dentro disso, escreva a função principal.

class ExecutionClass
(
public static void Main( )
(
)
)

Crie um objeto da classe pai e ative a função usando o objeto da classe. Isso invocará o método Color presente na classe Birds.

Birds object;
object = new Birds( );
object .Color( );

Agora crie o objeto da classe derivada e chame o método Color. Isso invocará o método Color da classe Parrot.

object = new Parrot( );
object.Color( );

Você consegue adivinhar a saída quando executamos o programa? Isto é como mostrado abaixo.

Resultado:

As Palavras-chave override e virtual permitem chamar a classe base e os métodos da classe derivada separadamente a qualquer momento, mesmo que os nomes e assinaturas do método sejam os mesmos.

Conclusão

Neste artigo, entendemos a substituição do método, a necessidade da substituição do método, exemplo do princípio de substituição no mundo real, a maneira de alcançá-lo, a necessidade de usar as palavras-chave virtual e de substituição e o exemplo de substituição usando o código. Podemos concluir que a substituição é uma das características úteis no polimorfismo, que podemos alterar o comportamento do método da classe base na classe derivada.

Artigos recomendados

Este é um guia para Substituição de método em C #. Aqui discutimos a introdução, como usar palavras-chave substitutas e diferentes para substituição de métodos, juntamente com exemplos e etapas. Você também pode consultar os seguintes artigos para saber mais -

  1. Funções C #
  2. Comandos C #
  3. O que é multithreading em c #?
  4. Funções de seqüência de caracteres C #
  5. Guia para substituir em C ++
  6. Substituindo em Java
  7. Multithreading em C # com métodos