Sobes.tech
Junior

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

sobes.tech АИ

Одговор од АИ

U Kotlinu, klasa može imati jedan primarni konstruktor i jedan ili više sekundarnih konstruktora.

  1. Primarni konstruktor: Definisan je u zaglavlju klase. Može imati parametre.

    class MojaKlasa(private val nekaSvojstva: String) { // Primarni konstruktor sa parametrima
        // Telo klase
    }
    
  2. Sekundarni konstruktori: Deklarišu se ključnom reči constructor. Ako klasa ima primarni konstruktor, svaki sekundarni konstruktor mora direktno ili indirektno da delegira na njega koristeći this().

    class DrugaKlasa(private val primarnaVrednost: Int) { // Primarni konstruktor
    
        constructor drugaVrednost: String) : this(drugaVrednost.length) { // Sekundarni konstruktor koji delegira na primarni
            // Logika sekundarnog konstruktora
            println("Kreirano sa stringom: $drugaVrednost")
        }
    
        constructor(vrednost1: Int, vrednost2: Int) : this(vrednost1 + vrednost2) { // Još jedan sekundarni
            // Logika
            println("Kreirano sa dva int-a: $vrednost1, $vrednost2")
        }
    }
    

Ako nema primarni konstruktor, sekundarni konstruktori nisu obavezni da delegiraju na druge konstruktore iste klase (ali mogu).

class BezPrimarnog {

    constructor(vrednost: Int) {
        println("Kreirano sa int: $vrednost")
    }

    constructor(vrednost: String) {
        println("Kreirano sa stringom: $vrednost")
    }
}