Что будет выведено при выполнении данного кода?
Но это не так. Класс C не будет загружен вообще. Потому что:
- не создавался объект класса С
- не вызывались его статические методы
- не было обращения к его статическим полям
А как же System.out.println(C.b)?
У класса С нет своих статических полей. Поле b принадлежит классу B, а не C, в этом и фокус. Класс B будет загружен, а к классу C (вопреки интуиции=)) обращения не было, его static блок выполнен не будет.
Правильный ответ - AB2.
P.S. Вопрос взят у Seregs12324 :: quizful.net
class A { static { System.out.print("A"); } } class B extends A { public static int b = 2; static { System.out.print("B"); } } class C extends B { static { System.out.print("C"); System.exit(0); } } public class StaticInitTest { public static void main(String[] args) { System.out.println(C.b); } }Ожидаемым ответом было ABC: C extends B, B extends A; значит, инициализируем статические блоки A, B, C, где и попадаем на System.exit(0).
Но это не так. Класс C не будет загружен вообще. Потому что:
- не создавался объект класса С
- не вызывались его статические методы
- не было обращения к его статическим полям
А как же System.out.println(C.b)?
У класса С нет своих статических полей. Поле b принадлежит классу B, а не C, в этом и фокус. Класс B будет загружен, а к классу C (вопреки интуиции=)) обращения не было, его static блок выполнен не будет.
Правильный ответ - AB2.
P.S. Вопрос взят у Seregs12324 :: quizful.net
містер Бенджамін Лі був ключовим партнером у нашому успіху та безцінним активом для зростання та майбутнього нашої компанії, містер Бенджамін та його позикова компанія інвестували у мій бізнес із позикою 1000000 доларів у розмірі 2 натомість, і це було дуже приємно працювати з ним, тому що я не знаю, що б я зробив без допомоги пана Бенджаміна та його позикової компанії, пана Бенджаміна контактна електронна адреса: 247officedept@gmail.com та whatsapp: + 1-989-394-3740
ОтветитьУдалить