Пример с родительским и дочерним классами:
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
