Sobes.tech
Junior

¿Cómo se pueden implementar varios constructores en una sola clase en Kotlin?

sobes.tech AI

Respuesta de la IA

En Kotlin, una clase puede tener un constructor primario y uno o varios constructores secundarios.

  1. Constructor primario: Se define en la cabecera de la clase. Puede tener parámetros.

    class MiClase(private val algunaPropiedad: String) { // Constructor primario con parámetro
        // Cuerpo de la clase
    }
    
  2. Constructores secundarios: Se declaran con la palabra clave constructor. Si la clase tiene un constructor primario, cada constructor secundario debe delegar directa o indirectamente en él usando la palabra clave this().

    class OtraClase(private val valorPrimario: Int) { // Constructor primario
    
        constructor(otroValor: String) : this(otroValor.length) { // Constructor secundario que delega en el primario
            // Lógica del constructor secundario
            println("Creado con cadena: $otroValor")
        }
    
        constructor(valor1: Int, valor2: Int) : this(valor1 + valor2) { // Otro constructor secundario
            // Lógica
            println("Creado con dos ints: $valor1, $valor2")
        }
    }
    

Si no hay constructor primario, los constructores secundarios no están obligados a delegar en otros constructores de la misma clase (pero pueden).

class ClaseSinPrimario {

    constructor(valor: Int) {
        println("Creado con int: $valor")
    }

    constructor(valor: String) {
        println("Creado con cadena: $valor")
    }
}