Sobes.tech
Middle

Qual é a diferença entre uma classe abstrata e uma interface?

sobes.tech IA

Resposta da IA

Classe abstrata — é uma classe que pode conter métodos implementados e métodos abstratos (sem implementação). Serve como base para herança e pode conter estado (campos).

Interface — é um contrato que define um conjunto de métodos sem implementação (no sentido clássico). A classe que implementa a interface deve implementar todos os seus métodos.

Principais diferenças:

  • A classe abstrata pode conter implementação e estado, a interface apenas assinaturas de métodos (em algumas linguagens, as interfaces podem conter métodos padrão).
  • Uma classe só pode herdar de uma classe abstrata, mas pode implementar várias interfaces.
  • A classe abstrata fornece uma implementação parcial, a interface apenas o contrato.

Exemplo em Java:

abstract class Animal {
    void eat() { System.out.println("Comendo"); }
    abstract void sound();
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void sound() { System.out.println("Cantar"); }
    public void fly() { System.out.println("Voando"); }
}