Sobes.tech
Junior

Háblame sobre la herencia en Kotlin.

sobes.tech AI

Respuesta de la IA

La herencia en Kotlin es un mecanismo que permite crear nuevas clases basadas en las existentes. La nueva clase (hija o derivada) hereda las propiedades (variables) y métodos (funciones) de la clase padre (base). Esto favorece la reutilización del código y la creación de jerarquías de clases.

Características clave:

  1. Por defecto, no es abierto: En Kotlin, las clases y métodos son final por defecto, lo que significa que no se pueden heredar ni sobrescribir. Para permitir la herencia, deben ser marcados explícitamente con la palabra clave open.
  2. Constructores: La clase hija debe llamar al constructor de una de las clases base (si hay varias, en el caso de interfaces). La llamada se realiza al declarar la clase hija usando (...).
  3. Sobrescribir métodos y propiedades: Para sobrescribir un método o propiedad de la clase base en la clase hija, deben ser marcados con open en la clase base y override en la clase hija.
  4. super: La palabra clave super se usa para acceder a los miembros de la clase base desde la clase hija.
  5. Herencia simple de implementación: Kotlin soporta herencia simple de implementación (de una sola clase), pero herencia múltiple de interfaces.

Ejemplo de clase base:

// Clase base
open class Animal(val name: String) {
    open fun makeSound() {
        println("$name hace un sonido")
    }
}

Ejemplo de clase hija:

// Clase hija
class Dog(name: String) : Animal(name) {
    override fun makeSound() {
        println("$name ladra")
    }
}

Uso:

// Uso de objetos
fun main() {
    val animal = Animal("Animal genérico")
    animal.makeSound() // Salida: Animal genérico hace un sonido

    val dog = Dog("Buddy")
    dog.makeSound() // Salida: Buddy ladra
}