Добрый день. Возникло несколько вопросов по решению данной задачи:
1. Правильно я понимаю, что супер-классом здесь является класс С?
2. Правильно я понимаю, что интерфейс JustAnInterface добавил статическую переменную B и внутренний класс B в класс С.
3. Почему вывод именно CCBAYS? Согласно статье: https://javarush.com/groups/posts/2137-porjadok-deystviy-pri-sozdanii-obhhekta вывод должен быть другой!
3.1 инициализация статических переменных родительского класса С (вызов конструктора класса B: сначала вызывается конструктор класса С, Потом вызывается конструктор класса В) итого получаем: от С (С) от В (В) - получаем СВ
3.2 инициализация статических класса Solution (здесь таких переменных нет - пропускаем).
3.3 инициализация нестатических переменных класса С (здесь таких переменных нет, но есть вложенный класс В: срабатывает его конструктор) - получаем СВ
34 срабатывает конструктор класса С:получаем С
3.5 инициализация нестатических переменных класса Solution: анонимный класс (получаем А) и переменная а (получаем Y)
3.6 срабатывает конструктор класса Solution:получаем S
ИТОГО: СВСВСAYS
4. Почему-то при удалении строчки
pre class='lang-java line-numbers'>
B localB = B;
из конструктора класса С вывод меняется с CCBAYS на CAYS - как присвоении ссылки может изменять вывод, если финализированная переменная уже объявлена и не меняется???
5. То, что для анонимного класса применяются правила как для локальной переменной прочитал тут: https://habr.com/ru/post/440068/ "К локальному классу применяются правила обычной локальной переменной."
Сделал вывод: инициализация работает также, где-нибудь написано об этом в официальной документации?
1. Статические блоки и статические поля в порядке объявления суперкласса(А) 2. Статические блоки и статические поля в порядке объявления подкласса(В) 3. Не статические блоки и не статические поля в порядке объявления суперкласса(А)4. Конструктор суперкласса(А) 5. Не статические блоки и не статические поля в порядке объявления подкласса(B) 6. Конструктор подкласса(B) зачеркнул то что нам не нужно.