В каком порядке происходит выполнение конструкторов и инициализаторов при создании экземпляра класса?

При создании экземпляра класса в iOS (например, на Swift) порядок выполнения следующий:

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

Что ответить на собеседовании

При создании экземпляра класса в iOS (например, на Swift) порядок выполнения следующий:

Подробный разбор

Ответ с пояснениями

При создании экземпляра класса в iOS (например, на Swift) порядок выполнения следующий:

  1. Сначала выполняются инициализаторы всех свойств, объявленных в классе (если они имеют значения по умолчанию).
  2. Затем вызывается конструктор (инициализатор) самого класса.
  3. Если класс наследуется, сначала вызываются инициализаторы суперкласса, а потом подкласса.

Пример на Swift:

class Parent {
    var name: String = "Parent"
    init() {
        print("Parent init")
    }
}

class Child: Parent {
    var age: Int = 10
    override init() {
        super.init() // сначала инициализатор суперкласса
        print("Child init")
    }
}

let c = Child()
// Вывод:
// Parent init
// Child init

Таким образом, сначала инициализируются свойства, затем вызывается инициализатор суперкласса, потом подкласса.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее