Sobes.tech
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.