☕ Вопрос с собеседования: Статический блок и порядок инициализации 🔍 Условие: Что выведет следующий код и почему? public class InitializationPuzzle { static { System.out.println("Static block 1"); } public static void main(String[] args) { Child.doSomething(); } } class Parent { static { System.out.println("Parent static block"); } } class Child extends Parent { static { System.out.println("Child static block"); } static void doSomething() { System.out.println("Child method"); } } ❓ Вопрос: Какой будет порядок вывода? Почему результат может удивить даже опытных Java-разработчиков? 🔍 Разбор: ✅ Что происходит по шагам: 1️⃣ При запуске программы сначала загружается класс `InitializationPuzzle`. Его статический блок выполняется сразу: Static block 1 2️⃣ Далее вызывается Child.doSomething(). Теперь происходит инициализация класса `Child`. В Java при инициализации класса-потомка сначала загружается родительский класс, если он ещё не был загружен. - Инициализация Parent: Pare