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"); }
}