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!
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!
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; }
}