Sobes.tech
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!")
    }
}