Diferença Chave: Existem dois tipos principais de classes: Classe Abstrata e Classe Concreta. A principal diferença entre os dois surge do nível de implementação das funcionalidades do método. Classes Concretas são classes regulares, onde todos os métodos são completamente implementados. Uma classe abstrata é exatamente o que o nome sugere. É onde as funções não são definidas, ou seja, são abstratas.
Existem dois tipos principais de classes: Classe Abstrata e Classe Concreta. A principal diferença entre os dois surge do nível de implementação das funcionalidades do método. Classes Concretas são classes regulares, onde todos os métodos são completamente implementados. Uma classe abstrata é exatamente o que o nome sugere. É onde as funções não são definidas, ou seja, são abstratas. É a classe base. Uma vez que uma classe abstrata é definida, ela deixa de ser abstrata e se torna uma classe concreta. Uma classe concreta é onde as implementações das funções de membro são fornecidas. Uma classe concreta é derivada da classe base, isto é, classe abstrata.
Uma maneira mais fácil de pensar sobre isso seria considerar um exemplo. Pense em esportes, é um objeto, mas um que não é definido. Tecnicamente, não existe esporte. Ela existe apenas como uma categorização para outros objetos. Esses objetos, como futebol, beisebol, basquete, hóquei, etc., são objetos definidos que podem ser categorizados e implementados em esportes. Assim, esportes são a classe abstrata, enquanto futebol, beisebol, basquete e hóquei são classes concretas.
Comparação entre a Classe Abstract e a Classe Concrete:
Classe abstrata | Classe Concreta | |
Tipo | Classe base | Classe padrão |
Métodos | Pode conter métodos parcialmente implementados | Todos os métodos são completamente implementados |
Funções | Algumas ou todas as funções declaradas são puramente virtuais | Nenhuma função puramente virtual |
Instanciação | Não pode ser instanciado | Pode ser instanciado |
Imagem Cortesia: tutorials.jenkov.com, stackoverflow.com