Что выведет код Middle Основы: типы, обёртки, static спрашивают часто обновлено
Что выведет: порядок static и конструкторов
Вопрос
Что выведет программа (Java 21)? Каждый вывод println с новой строки.
public class Main {
static class A {
static { System.out.println("A static"); }
{ System.out.println("A init"); }
A() { System.out.println("A()"); }
}
static class B extends A {
static { System.out.println("B static"); }
{ System.out.println("B init"); }
B() { System.out.println("B()"); }
}
public static void main(String[] args) {
new B();
new B();
}
}
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: A static, B static, A init, A(), B init, B(), A init, A(), B init, B(). Статические блоки выполняются один раз при инициализации класса: сначала родитель, потом наследник.
Что выведет
A static
B static
A init
A()
B init
B()
A init
A()
B init
B()
Разбор
Статические блоки выполняются один раз при инициализации класса: сначала родитель, потом наследник. Затем для каждого объекта: блок экземпляра и конструктор A, потом блок экземпляра и конструктор B. Второй new B() уже не трогает статику.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Ключевое слово static
Следующий вопрос
Переопределённый метод в конструкторе родителя
Термины по теме
Ещё по теме «Основы: типы, обёртки, static»
- char плюс int
- Изменили константу в библиотеке
- Деньги в double
- Ключ Long и get(int)
- final ссылка на список
- Автоупаковка
- Порядок инициализации
- Примитивы Java