Junior — Middle
Qual é a diferença entre uma interface e uma classe abstrata no contexto da programação orientada a objetos?
sobes.tech IA
Resposta da IA
A interface e a classe abstrata são duas formas de definir abstrações na programação orientada a objetos, mas têm diferenças-chave:
- Interface descreve um conjunto de métodos que a classe deve implementar, mas não contém implementação (embora em algumas linguagens seja possível ter métodos com implementação padrão). A interface não pode conter estado (variáveis de instância).
- Classe abstrata pode conter tanto métodos abstratos (sem implementação) quanto métodos com implementação. Também pode conter campos (estado).
Exemplo em Swift:
protocol Vehicle {
func startEngine()
}
class Car: Vehicle {
func startEngine() {
print("Motor ligado")
}
}
// A classe abstrata em Swift é implementada através de uma classe com métodos que precisam ser sobrescritos
class Animal {
func makeSound() {
fatalError("Este método deve ser sobrescrito")
}
}
class Dog: Animal {
override func makeSound() {
print("Au au")
}
}
Assim, a interface define um contrato, e a classe abstrata pode fornecer uma implementação parcial e manter estado.