Sobes.tech
Junior

Jak implementovat více konstruktorů ve třídě v Kotlinu?

sobes.tech AI

Odpověď od AI

Pro vytvoření více konstruktorů v Kotlinu se používá primární konstruktor a podle potřeby jeden nebo více sekundárních konstruktorů.

Primární konstruktor je deklarován přímo v hlavičce třídy:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Tělo třídy
}

Sekundární konstruktor je deklarován pomocí klíčového slova constructor:

class MyClass {
    // Primární konstruktor (implicitní nebo explicitní)

    constructor(param1: String) {
        // Logika sekundárního konstruktoru 1
    }

    constructor(param1: String, param2: Int) {
        // Logika sekundárního konstruktoru 2
    }
}

Pokud má třída primární konstruktor, musí každý sekundární konstruktor delegovat volání na primární konstruktor pomocí this():

class MyClass(primaryParam: String) {

    constructor(secondaryParam: Int) : this(secondaryParam.toString()) {
        // Logika sekundárního konstruktoru
    }
}

Lze mít také více sekundárních konstruktorů delegujících na primární nebo jiné sekundární konstruktor, přičemž se dodržuje hierarchie delegace:

class MyClass(primaryParam: String) {

    constructor(param1: String, param2: Int) : this(param1) {
        // Logika konstruktoru 1
    }

    constructor(param1: String, param2: Int, param3: Boolean) : this(param1, param2) {
        // Logika konstruktoru 2
    }
}

Důležité body:

  • Tělo primárního konstruktoru se vykoná před tělem sekundárních konstruktorů.
  • Vlastnosti deklarované v hlavičce primárního konstruktoru mohou být dostupné v těle sekundárních konstruktorů.
  • V Kotlinu se doporučuje používat primární konstruktor a pokud možno se vyhnout sekundárním konstruktorům, upřednostňovat pojmenované argumenty nebo tovární metody.