Como é que a herança é feita na linguagem Kotlin?
sobes.tech IA
Resposta da IA
A herança em Kotlin baseia-se nas palavras-chave open e override. As classes e métodos por padrão são final, ou seja, não podem ser herdados ou sobrescritos. Para permitir herança, a classe ou método deve ser marcado com o modificador open.
Para criar uma classe herdada, usa-se dois pontos : após o nome da classe base, seguidos do nome da classe base com o seu construtor.
open class Base(val name: String) {
open fun greet() {
println("Olá, $name")
}
}
Para sobrescrever um método da classe base na classe herdada, usa-se o modificador override.
class Derived(name: String) : Base(name) {
override fun greet() {
println("Saudações, $name")
}
}
Se a classe base tiver um construtor com parâmetros, a classe herdada deve chamá-lo usando a palavra-chave super.
O Kotlin suporta herança múltipla de interfaces, mas não de classes. Uma classe só pode herdar de uma única classe.
A classe também pode marcar seus membros como protected, internal ou private, limitando sua visibilidade para classes derivadas ou dentro do módulo, respetivamente.
Classes abstratas são declaradas com a palavra-chave abstract. Elas podem conter métodos abstratos (sem implementação) e métodos normais. Métodos abstratos não precisam da palavra open, pois assumem-se que serão sobrescritos. Classes abstratas não podem ser instanciadas diretamente.
abstract class Shape {
abstract fun draw()
open fun printInfo() {
println("Isto é uma forma.")
}
}
Assim, a herança em Kotlin é explicitamente controlada pelos modificadores open e override, o que melhora a legibilidade e previne heranças indesejadas.