Sobes.tech
Junior

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

sobes.tech AI

Odpowiedź od AI

Aby utworzyć wiele konstruktorów w Kotlinie, używa się konstruktora głównego i, w razie potrzeby, jednego lub więcej konstruktorów pomocniczych.

Konstruktor główny jest deklarowany bezpośrednio w nagłówku klasy:

class MyClass(primaryParam1: String, primaryParam2: Int) {
    // Ciało klasy
}

Konstruktory pomocnicze są deklarowane za pomocą słowa kluczowego constructor:

class MyClass {
    // Konstruktor główny (domyślny lub jawny)

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

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

Jeśli klasa ma konstruktor główny, każdy konstruktor pomocniczy musi delegować wywołanie do konstruktora głównego, używając słowa kluczowego this():

class MyClass(primaryParam: String) {

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

Można również mieć kilka konstruktorów pomocniczych delegujących do konstruktora głównego lub innych konstruktorów pomocniczych (zgodnie z hierarchią delegacji):

class MyClass(primaryParam: String) {

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

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

Ważne punkty:

  • Ciało konstruktora głównego jest wykonywane przed ciałem konstruktorów pomocniczych.
  • Właściwości zadeklarowane w nagłówku konstruktora głównego mogą być dostępne w ciele konstruktorów pomocniczych.
  • W Kotlinie zaleca się używanie konstruktora głównego i, o ile to możliwe, unikanie konstruktorów pomocniczych, preferując argumenty nazwane lub metody fabryczne.