Для меня одно стало откровением, а что нестатический блок имеет преимущество перед переменными и конструктором!?
KeLL
29 уровень
нестатический блок
Обсуждается
Комментарии (3)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Justinian Judge в Mega City One Master
24 сентября 2021, 00:12
нестатический блок находится на том же уровне приоритета, что и нестатические переменные.
Конструктор вызовется первым, но в нем выполнится только первая строка вызова родительского конструктора, остальное его тело отработает после того, как выполняться инициализация и отработка статических и нестатических переменных/блоков.
Блок кода в этом отношении тоже самое что и переменная, очередность выполнения будет определяться текстовым порядком объявления.
private static String name = ... // 1
static {
// 2
}
{
// 4
}
private int age = ...// 5
{
// 6
}
private static String surname = ...// 3
Запусти и разбери следующий код:
https://pastebin.com/D5XRchfs
0
Justinian Judge в Mega City One Master
24 сентября 2021, 00:16
там специально пропущены цифры 1 и 2, потому что первым вызовется конструктор Child (1), который сразу же вызовет конструктор Parent (2) и потом начнется процесс инициализации, то есть эти конструкторы вызовутся но в них отработает только первая строка - это вызов родительского конструктора, управление потом заберется, и только на более поздних этапах - вернется в тело конструктора и продолжится выполнение остального кода конструктора.
0
Сергей Жирков Backend Developer в MvideoMobile
23 сентября 2021, 23:43
Перед полями класса - нет, а перед конструктором - да.
0