Diferencia entre Kotlin Init y Constructores

Kailash Vaviya 15 febrero 2024
  1. Constructores Kotlin
  2. Kotlin inicio
Diferencia entre Kotlin Init y Constructores

Kotlin es un lenguaje de programación orientado a objetos (POO). Los constructores y los bloques init son componentes vitales de este lenguaje de programación de Android.

Este artículo analizará la diferencia entre estos dos componentes.

Constructores Kotlin

Como su nombre indica, los constructores de Kotlin ayudan en la construcción de clases. Las clases son la base de un lenguaje OOP.

En Kotlin, hay dos tipos de constructores, primarios y secundarios. Cada clase puede tener un constructor primario y cualquier número de constructores secundarios definidos usando la palabra clave constructor.

Constructores primarios de Kotlin

El constructor principal en Kotlin siempre es parte del encabezado de la clase. Puede tener parámetros opcionales.

class exampleClass public constructor(str: String, i: Int){
    //functions
}

Quizás se pregunte, si cada encabezado de clase tiene un constructor principal, ¿por qué muchas clases se declaran sin usar la palabra clave constructor?

Puede omitir la palabra clave si no desea utilizar modificadores de acceso o anotaciones con el constructor principal.

class exampleClass (str: String, i: Int){
    //functions
}

Dado que el constructor principal es parte del encabezado de la clase, no puede tener ningún código. Podemos poner el código en los bloques inicializadores usando la palabra clave init, más sobre eso más adelante en este artículo.

Si bien no se permite escribir un código, podemos declarar e inicializar las propiedades del constructor primario usando estas sintaxis:

class exampleClass (val str: String, var i: Int){
    //functions
}

O

class exampleClass (
    val str: String,
    var i: Int,
){
    //functions
}

También podemos declarar el valor predeterminado de una propiedad en el constructor principal:

class exampleClass (val str: String, var i: Int = 15){
    //functions
}

Constructores secundarios de Kotlin

Además del constructor principal, también podemos declarar uno o varios constructores secundarios utilizando la palabra clave constructor.

Todos los constructores secundarios de una clase deben delegar en el principal utilizando la palabra clave this. Aquí hay un ejemplo del uso del constructor secundario en Kotlin.

fun main(args: Array<String>){
    var Stu = Student("Zack",17, "Kotlin")
    Stu.printStudentDetails()
}

// This is the primary constructor
class Student constructor(var firstName: String, var age: Int){
    var expert: String = "Nothing"

    // Creating a secondary constructor
    constructor (firstName: String, age: Int, expert: String): this(firstName,age){
        this.expert = expert
    }

    fun printStudentDetails(){
        println("$firstName, a $age years old student, is an expert in $expert.")
    }
}

Producción:

Ejemplo de constructor secundario de Kotlin

Ejecutar código

Kotlin inicio

La palabra clave init de Kotlin se usa para escribir bloques de inicialización. Estos bloques ayudan a escribir códigos para el constructor principal.

No podemos escribir código en el constructor principal ya que es parte del encabezado de la clase. Por lo tanto, podemos usar un constructor secundario o bloques inicializadores para eso.

También podemos usar los parámetros y propiedades del constructor principal en los bloques init de Kotlin.

Veamos un ejemplo en el que verificamos si el número dado es mayor que 50 o no usando el bloque init de Kotlin.

class Numbers(firstName: String, num2: Int) {
    var res = false
    val n1 = 50

    init {
        res = num2 > n1
    }
}

fun main(){
    var numbers = Numbers("This number is greater than 50", 63)
    println(numbers.res)
}

Producción:

Ejemplo de inicio de Kotlin

Ejecutar código

Dado que los códigos en los bloques init de Kotlin se escriben como parte del constructor principal, se convierten en parte de él.

Y como la delegación del constructor secundario con el constructor primario es lo primero que se hace durante la ejecución del primero, los bloques init se ejecutan antes que las funciones de los constructores secundarios.

Aquí hay un código de ejemplo. En este código, hemos escrito el código del constructor secundario arriba de Kotlin init; sin embargo, el código init se ejecutará primero.

class Person {
    constructor(i: Int) {
        println("Person $i")
    }

    init {
        println("This part will execute before the secondary constructor's code.")
    }
}

fun main() {
    Person(1)
}

Producción:

Kotlin init ejecuta el primer ejemplo

Ejecutar código

Kailash Vaviya avatar Kailash Vaviya avatar

Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.

LinkedIn

Artículo relacionado - Kotlin Constructor