Junior — Middle
Quais são as diferenças entre uma classe abstrata e uma interface na programação orientada a objetos?
sobes.tech IA
Resposta da IA
Uma classe abstrata e uma interface são mecanismos diferentes para descrever contratos e comportamentos na programação orientada a objetos, mas com diferenças-chave:
-
Classe abstrata pode conter métodos abstratos (sem implementação) e métodos concretos com implementação. Pode ter estado (campos). As classes herdam da classe abstrata e podem sobrescrever métodos.
-
Interface descreve apenas um conjunto de métodos sem implementação e não contém estado. A classe que implementa a interface deve implementar todos os seus métodos.
Exemplo de diferenças:
- A classe abstrata é adequada quando é necessário definir uma implementação base e um estado comum para os herdeiros.
- A interface é usada para descrever capacidades que podem ser implementadas por diferentes classes sem relação de herança.
Por exemplo, a interface Flyable pode descrever o método fly(), e a classe abstrata Bird pode conter o campo wingSpan e o método sing() com implementação.