Назад к вопросам
Junior
87
questionbank

Как в Kotlin можно реализовать несколько конструкторов в одном классе?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

В Kotlin класс может иметь один первичный конструктор и один или несколько вторичных конструкторов.

  1. Первичный конструктор: Определяется в заголовке класса. Может иметь параметры.

    class MyClass(private val someProperty: String) { // Первичный конструктор с параметром
        // Тело класса
    }
    
  2. Вторичные конструкторы: Объявляются с ключевым словом constructor. Если класс имеет первичный конструктор, каждый вторичный конструктор должен прямо или косвенно делегировать ему вызов с использованием ключевого слова this().

    class AnotherClass(private val primaryValue: Int) { // Первичный конструктор
    
        constructor(anotherValue: String) : this(anotherValue.length) { // Вторичный конструктор, делегирующий первичному
            // Логика вторичного конструктора
            println("Created with string: $anotherValue")
        }
    
        constructor(value1: Int, value2: Int) : this(value1 + value2) { // Еще один вторичный конструктор
            // Логика
            println("Created with two ints: $value1, $value2")
        }
    }
    

При отсутствии первичного конструктора, вторичные конструкторы не обязаны делегировать другим конструкторам того же класса (но могут).

class ClassWithoutPrimary {

    constructor(value: Int) {
        println("Created with int: $value")
    }

    constructor(value: String) {
        println("Created with string: $value")
    }
}