Ключевое слово init

Ключевое слово init используется для создания блоков инициализации в классе. Блоки инициализации выполняются при создании экземпляра класса, непосредственно после вызова первичного конструктора и до вызова вторичных конструкторов. В классе может быть несколько блоков init, которые выполняются в порядке их объявления.

Синтаксис

kotlininit {
  // код инициализации
}

Пример

Создадим класс с блоком инициализации:

kotlinclass Person(val name: String, val age: Int) {
  init {
    println("Person created: $name, $age years old")
  }
}

val person = Person("John", 25)

Результат выполнения кода:

kotlinPerson created: John, 25 years old

Пример

Класс с несколькими блоками инициализации:

kotlinclass Example {
  init {
    println("First init block")
  }

  init {
    println("Second init block")
  }
}

val example = Example()

Результат выполнения кода:

kotlinFirst init block
Second init block

Пример

Блоки инициализации выполняются до тела вторичного конструктора:

kotlinclass User(val name: String) {
  init {
    println("Init block executed")
  }

  constructor() : this("Guest") {
    println("Secondary constructor executed")
  }
}

val user = User()

Результат выполнения кода:

kotlinInit block executed
Secondary constructor executed

Пример

Проверка валидности параметров в блоке инициализации:

kotlinclass Account(val balance: Double) {
  init {
    if (balance < 0) {
      throw IllegalArgumentException("Balance cannot be negative")
    }
    println("Account created with balance: $balance")
  }
}

val account = Account(1000.0)

Результат выполнения кода:

kotlinAccount created with balance: 1000.0

Пример

Инициализация свойств в блоке инициализации:

kotlinclass Rectangle(val width: Int, val height: Int) {
  val area: Int

  init {
    area = width * height
    println("Rectangle area: $area")
  }
}

val rectangle = Rectangle(5, 3)

Результат выполнения кода:

kotlinRectangle area: 15

Смотрите также

  • ключевое слово constructor,
    которое используется для объявления конструкторов класса
  • ключевое слово class,
    которое используется для объявления классов
  • ключевое слово this,
    которое ссылается на текущий экземпляр объекта
  • ключевое слово lateinit,
    которое используется для отложенной инициализации свойств