Sobes.tech
Junior — Middle

Como diferem os mecanismos de herança em Java e Kotlin?

sobes.tech IA

Resposta da IA

Em Java, a herança é implementada através da palavra-chave extends para classes e implements para interfaces. As classes suportam herança simples (uma classe pai), mas podem implementar várias interfaces. Todos os métodos em Java por padrão não são virtuais, mas podem sobrescrever os métodos do pai.

Em Kotlin, a herança é mais flexível:

  • As classes por padrão são final (não podem ser herdadas), para que a herança seja explícita, deve-se declarar a classe como open.
  • A herança é indicada por : e o construtor do pai é chamado imediatamente após o nome da classe.
  • Kotlin suporta herança múltipla de interfaces e permite que as interfaces contenham implementações de métodos.
  • Os métodos e propriedades por padrão são final, para sobrescrevê-los, deve-se usar open no pai e override no filho.

Exemplo:

Java:

class Animal {
    void sound() { System.out.println("Algum som"); }
}

class Dog extends Animal {
    @Override
    void sound() { System.out.println("Latido"); }
}

Kotlin:

open class Animal {
    open fun sound() { println("Algum som") }
}

class Dog : Animal() {
    override fun sound() { println("Latido") }
}

Assim, Kotlin torna a herança mais rigorosa e explícita, o que aumenta a segurança do código e reduz erros.