- Статические блоки инициализации выполняются во время загрузки класса.
- В иерархии классов порядок выполнения статических блоков инициализации начинается с класса верхнего уровня.
- В классе порядок выполнения статического блока находится сверху вниз.
- Выше правило применяется независимо от того, где статический блок присутствует в классе.
(В вашем коде сначала будут выполняться родительские статические блоки, а затем статические блоки дочернего класса.)
- Блоки инициализации экземпляра будут выполнены после вызова super (); в конструкторе. Всегда super (); - это самый первый оператор в конструкторе по умолчанию.
В вашем коде при создании объекта Child:
- Выполняется конструктор по умолчанию класса Child.
- Он вызовет super (); конструктор.
- Затем выполняется конструктор суперкласса.
- Родительский класс выполнит свой super (); вызов.
- После этого исполняются блоки init экземпляра в классе Parent (сверху вниз).
- Затем выполняется код внутри конструктора (если есть).
- Затем он вернется в класс Child и выполнит блоки init экземпляра класса Child.
- Наконец, код в дочернем конструкторе выполняется (если существует).
задан laila 29 March 2019 в 15:51
поделиться