Как работают instance initializer blocks. Пример с родительским и… — Библиотека Java разработчика — TG.ME

Как работают instance initializer blocks.


Пример с родительским и дочерним классами:


class Parent {
int a = 5;

{
System.out.println("Parent instance initializer");
a = 10;
}

Parent() {
System.out.println("Parent constructor, a = " + a);
}
}

class Child extends Parent {
int b = 15;

{
System.out.println("Child instance initializer");
b = 25;
}

Child() {
System.out.println("Child constructor, b = " + b);
}
}

public class Test {
public static void main(String[] args) {
Child child = new Child();
}
}



Вывод программы:


Parent instance initializer
Parent constructor, a = 10
Child instance initializer
Child constructor, b = 25


Пошаговое выполнение:

1. Сначала загружается родительский класс Parent.
2. Выполняется:
- Инициализация полей родителя (a = 5),
- Потом instance initializer блока родителя (a = 10),
- Потом конструктор родителя (Parent()).
3. Далее переходим к дочернему классу Child:
- Инициализация полей дочернего класса (b = 15),
- Потом instance initializer блока дочернего класса (b = 25),
- Потом конструктор дочернего класса (Child()).


Важный порядок действий:

1. Инициализация родителя → 2. Конструктор родителя → 3. Инициализация потомка → 4. Конструктор потомка.

Блоки инициализации всегда выполняются до тела конструктора, но после вызова super().

📲 Мы в MAX

👉@BookJava
👍6
August 9, 2026 841 4