Refer to the exhibit. What is the output when running the main method?
Static init block, then instance init block, then constructor.
Why this answer
The correct answer is B because the code demonstrates a standard Java class hierarchy with method overriding and the use of the `super` keyword. When `new C()` is instantiated, the constructor of `C` calls `super()` (implicitly or explicitly), which invokes the constructor of `B`. In `B`, the constructor calls `super()` again, invoking the constructor of `A`.
Since `A`'s constructor prints 'A', then `B`'s constructor prints 'B', and finally `C`'s constructor prints 'C', the output is 'A B C'.
Exam trap
Oracle often tests the order of constructor execution in inheritance, and the trap here is that candidates mistakenly think constructors execute from child to parent (like destructors in C++) or confuse the output order with method overriding behavior, leading them to choose 'C B A' or 'B A C'.
How to eliminate wrong answers
Option A is wrong because it suggests the output is 'B A C', which would occur if constructors were called in reverse order or if `super()` was not used correctly, but Java always calls parent constructors first. Option C is wrong because it suggests 'A C B', which would happen if `C`'s constructor printed before `B`'s, but `super()` in `C` invokes `B`'s constructor before `C`'s own print statement. Option D is wrong because it suggests 'C B A', which would be the order of a destructor chain or if constructors were called from child to parent, but Java constructors execute from the top of the hierarchy down.