АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP, Python или фреймворки. Сегодня последний день для записи! Жми!
1274 of 1310 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

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

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

Синтаксис

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

Пример

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

class Person(val name: String, val age: Int) { init { println("Person created: $name, $age years old") } } val person = Person("John", 25)

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

Person created: John, 25 years old

Пример

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

class Example { init { println("First init block") } init { println("Second init block") } } val example = Example()

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

First init block Second init block

Пример

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

class User(val name: String) { init { println("Init block executed") } constructor() : this("Guest") { println("Secondary constructor executed") } } val user = User()

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

Init block executed Secondary constructor executed

Пример

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

class 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)

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

Account created with balance: 1000.0

Пример

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

class Rectangle(val width: Int, val height: Int) { val area: Int init { area = width * height println("Rectangle area: $area") } } val rectangle = Rectangle(5, 3)

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

Rectangle area: 15

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

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