Junior
Quais são as principais diferenças entre uma classe e uma interface em Kotlin?
sobes.tech IA
Resposta da IA
- Classe: pode conter propriedades (estados) e funções (comportamento). Pode ser abstrata, aberta (para herança) ou final. Os construtores definem a forma de criar objetos. Suporta herança de uma única classe e implementação múltipla de interfaces.
- Interface: define um contrato de comportamento que as classes devem implementar. Pode conter declarações abstratas de funções e propriedades, bem como funções com implementação (Java 8+). Não pode conter estados (propriedades com campo de apoio). Uma classe pode implementar várias interfaces. Não possui construtores.
Tabela comparativa:
| Aspeto | Classe | Interface |
|---|---|---|
| Estado | Pode ter propriedades com valor. | Não pode ter propriedades com valor (apenas abstratas). |
| Construtores | Podem existir. | Não têm. |
| Implementação | Pode fornecer implementação completa. | Fornece implementação parcial ou completa (com métodos padrão). |
| Herança | Herda de uma única classe. | Implementa múltiplas interfaces. |
| Inicialização | Pode ser instanciada. | Não pode ser instanciada diretamente. |
| Tipo | Concreta ou abstrata. | Apenas contrato de comportamento. |
Exemplo de classe:
class Person(val name: String) { // classe com construtor e propriedade
fun greet() {
println("Hello, my name is $name")
}
}
Exemplo de interface:
interface Greeter { // interface com método
fun greet()
}
class EnglishGreeter : Greeter { // classe que implementa a interface
override fun greet() {
println("Hello!")
}
}