Sobes.tech
Junior

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.