Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Kotlin: init, constructor, initialization, primary constructor, secondary constructor

В чем разница между init и constructor в Kotlin?

Этот вопрос проверяет знание разницы между блоком инициализации (init) и конструкторами в Kotlin, а также их роли при создании объектов.

Короткий ответ

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

Длинный ответ

В Kotlin ключевые элементы инициализации класса — это конструкторы (первичный и вторичные) и блоки init

1. Первичный конструктор (primary constructor):

  • Определяется в заголовке класса.

  • Может принимать параметры, которые можно использовать для инициализации свойств.

  • Пример:

    class Person(val name: String, val age: Int)

2. Вторичные конструкторы (secondary constructors):

  • Используются, если нужно задать альтернативные способы создания объекта.

  • Всегда вызывают первичный конструктор через this.

  • Пример:

    class Person(val name: String, val age: Int) {
     	constructor(name: String) : this(name, 0)
    }

3. Блок инициализации (init):

  • Выполняется каждый раз при создании объекта.

  • Используется для проверки данных или настройки объекта.

  • Пример:

    class Person(name: String) {
        	val greeting: String
    
        	init {
            	greeting = "Hello, $name!"
            	println("Person initialized")
        	}
    }
    
    fun main() {
        	val person = Person("John")
        	println(person.greeting)
        	// Вывод:
        	// Person initialized
        	// Hello, John!
    }

Основное отличие:

  • constructor создаёт объект и связывает данные с ним.

  • init выполняет дополнительную логику после создания объекта.

Используйте init для выполнения действий, которые должны быть общими для всех конструкторов, а параметры передавайте через constructor. Это обеспечивает гибкость и удобство инициализации объектов.

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    7

Навыки

  • Kotlin

    Kotlin

Ключевые слова

#init

#constructor

#initialization

#primary constructor

#secondary constructor

Подпишись на Android Developer в телеграм

  • Аватар

    Android Guru

    Anton Gulyaev

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.