O que é um método virtual? Qual a diferença entre uma classe concreta, classe abstrata e interface.
Passo 1
Um método virtual é um método que foi pensado desde o começo para sofrer polimorfismo. Para criar um método virtual basta utilizar a palavra-chave no momento de declarar o método. Usando métodos virtuais nós facilitamos a leitura do código, e facilita o uso de ponteiros com classes derivadas.
Um método virtual funciona como um método comum, recebe parâmetros, efetua operações e pode retornar um resultado.
Porém, é possível criar métodos virtuais completamente vazios. Esses são os métodos virtuais puros. Os métodos virtuais puros não efetuam nenhuma atividade, e servem simplesmente para “guardar espaço” numa classe mãe. Esse método deve obrigatoriamente sofrer polimorfismo.
Uma classe que possui ao menos um método virtual puro é chamada de classe abstrata. Classes abstratas não podem gerar objetos. Se todos os métodos de um classe forem virtuais puros, então é chamado de interface. As classes abstratas e interfaces são desde o começo pensadas para funcionar como classes bases para gerar classes filhas que serão utilizáveis.
Caso uma classe não possua nenhum método virtual puro, então ela é chamada de classe concreta. Essas são as classes que podem ser utilizadas diretamente gerando novos objetos.
Resposta
Ei, a resposta está no passo a passo :)