Sobes.tech
Junior

Kako implementirati više konstruktora u jednoj klasi u Kotlinu?

sobes.tech АИ

Одговор од АИ

Za kreiranje više konstruktora u Kotlinu koristi se primarni konstruktor i, po potrebi, jedan ili više sekundarnih konstruktora.

Primarni konstruktor se direktno deklarise u zaglavlju klase:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Telo klase
}

Sekundarni konstruktori se deklarisu pomoću ključne reči constructor:

class MyClass {
    // Primarni konstruktor (implicitni ili eksplicitni)

    constructor(param1: String) {
        // Logika sekundarnog konstruktora 1
    }

    constructor(param1: String, param2: Int) {
        // Logika sekundarnog konstruktora 2
    }
}

Ako klasa ima primarni konstruktor, svaki sekundarni mora delegirati poziv ka primarnom konstruktoru koristeći this():

class MyClass(primaryParam: String) {

    constructor(secondaryParam: Int) : this(secondaryParam.toString()) {
        // Logika sekundarnog konstruktora
    }
}

Takođe, može postojati više sekundarnih konstruktora koji delegiraju na primarni ili na druge sekundarne konstruktore (poštujući hijerarhiju delegacije):

class MyClass(primaryParam: String) {

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

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

Važne tačke:

  • Telo primarnog konstruktora se izvršava pre tela sekundarnih.
  • Svojstva deklarisana u zaglavlju primarnog konstruktora mogu biti dostupna u telu sekundarnih.
  • U Kotlinu se preporučuje korišćenje primarnog konstruktora i, ako je moguće, izbegavanje sekundarnih, preferirajući imenovane argumente ili fabričke metode.