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 comoopen. - 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 usaropenno pai eoverrideno 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.