Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Diferença e definição entre Abstract e Virtual

Alguém poderia explicar qual a diferença entre ambas de maneira simples? Afinal são bem semelhantes. Não consegui captar muito bem ainda.

Obrigado!

1 resposta
solução

Em uma classe quando tu declara ela como abstract ela não pode ser instanciada somente herdada exemplo

 abstract class Teste{}

se eu tentar

Teste teste = new Teste(); // vai gerar erro de compilação

para usar a classe Teste eu teria que herdar ela exemplo:

class Teste2 : Teste {}

agora se tu usa o abstract no nível do método, na classe que ele herda tu é obrigado a fazer uma sobrescrita do método

class Teste{
    public abstract void Console();
}
class Teste2 : Teste{
    public void Console(){ Console.WriteLine("teste");}
}

se você declara um método como virtual, tu permite que ele seja sobrescrito dando uma nova funcionalidade para ele exemplo:

class Teste {
    public virtual int Calc(int a, int b){ return a + b;}
}

class Teste2 : Teste{
    public override int Calc(int a, int b) { return a * b; }
}