Sobes.tech
Junior

Jak zaimplementować wiele konstruktorów w jednej klasie w Kotlinie?

sobes.tech AI

Odpowiedź od AI

W Kotlinie klasa może mieć jeden konstruktor główny i jeden lub więcej konstruktorów pomocniczych.

  1. Konstruktor główny: Definiowany jest w nagłówku klasy. Może mieć parametry.

    class MojaKlasa(private val jakaśWłaściwość: String) { // Konstruktor główny z parametrem
        // Ciało klasy
    }
    
  2. Konstruktory pomocnicze: Deklarowane są słowem kluczowym constructor. Jeśli klasa ma konstruktor główny, każdy konstruktor pomocniczy musi bezpośrednio lub pośrednio delegować do niego, używając this().

    class InnaKlasa(private val wartośćPodstawowa: Int) { // Konstruktor główny
    
        constructor innaWartość: String) : this(innaWartość.length) { // Konstruktor pomocniczy delegujący do głównego
            // Logika konstruktora pomocniczego
            println("Utworzono z łańcucha: $innaWartość")
        }
    
        constructor(wartość1: Int, wartość2: Int) : this(wartość1 + wartość2) { // Kolejny konstruktor pomocniczy
            // Logika
            println("Utworzono z dwoma intami: $wartość1, $wartość2")
        }
    }
    

Przy braku konstruktora głównego, konstruktory pomocnicze nie muszą delegować do innych konstruktorów tej samej klasy (ale mogą).

class KlasaBezKonstruktoraGłównego {

    constructor(wartość: Int) {
        println("Utworzono z int: $wartość")
    }

    constructor(wartość: String) {
        println("Utworzono z łańcucha: $wartość")
    }
}