Junior
42
questionbank

Расскажи об инициализаторах в классах на языке Kotlin.

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

В Kotlin классы могут иметь первичный и один или несколько вторичных конструкторов. Инициализаторы — это блоки кода init, которые выполняются в порядке их объявления после первичного конструктора (если он есть) или после вторичного конструктора, если первичного нет.

Первичный конструктор

Объявляется непосредственно в заголовке класса. Он может содержать параметры, которые используются для инициализации свойств.

kotlin

Вторичные конструкторы

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

kotlin

Порядок выполнения

  1. Код в первичке (если есть параметры, используются они).
  2. Блоки init последовательно.
  3. Код во вторичном конструкторе, который был вызван (после делегирования вызова).

Пример порядка выполнения:

kotlin

Вывод:

plaintext

Даже если вызывается вторичный конструктор, блоки init выполняются всегда перед его телом. Это гарантирует, что основная инициализация объекта завершена до выполнения специфического кода вторичного конструктора.

Инициализаторы незаменимы для выполнения логики, которая должна быть выполнена при создании любого экземпляра класса, независимо от того, какой конструктор используется. Например, для проверки входных данных или настройки состояния объекта.