Olá tudo bem, vamos a definição da Microsoft sobre Métodos Virtuais

“A virtual function is a member function that you expect to be redefined in derived classes. When you refer to a derived class object using a pointer or a reference to the base class, you can call a virtual function for that object and execute the derived class’s version of the function.”

 

Para melhorar o nosso entendimento vamos conferir o diagrama de class abaixo.

Segue um exemplo básico mostrando o poder do polimorfismo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Pessoa
    {
        public virtual string Nome()
        {
            return "Nome Padrao";
        }
    }
 
    public class Ricardo : Pessoa
    {
        public override string Nome()
        {
            return "Ricardo";
        }
 
    }
 
    public class Paulo : Pessoa
    {
        public override string Nome()
        {
            return "Paulo";
        }
    }

Agora vamos aos testes

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[TestClass]
public class TestMetodoVirtual
{
 
    [TestMethod]
    public void deve_retornar_nome_ricardo()
    {
        Pessoa pessoa = new Ricardo();
        Assert.AreEqual("Ricardo", pessoa.Nome());
    }
 
    [TestMethod]
    public void deve_retornar_nome_paulo()
    {
        Pessoa pessoa = new Paulo();
        Assert.AreEqual("Paulo", pessoa.Nome());
    }
}

Conclusão:

Apesar desse exemplo bem simples existe vários Framework que utilizam essa estrategia, uma dica legal e utilizar e conhecer o Hook Method até aproxima pessoal.

Exibições: 578

Comentar

Você precisa ser um membro de DevBrasil para adicionar comentários!

Entrar em DevBrasil

© 2019   Criado por Ramon Durães.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço