Q. Determine output:
class A{
{
System.out.print("b1 ");
}
public A(){
System.out.print("b2 ");
}
}
class B extends A{
static{
System.out.print("r1 ");
}
public B(){
System.out.print("r2 ");
}
{
System.out.print("r3 ");
}
static{
System.out.print("r4 ");
}
}
public class Test extends B{
public static void main(String[] args){
System.out.print("pre ");
new Test();
System.out.println("post ");
}
}
class A{
{
System.out.print("b1 ");
}
public A(){
System.out.print("b2 ");
}
}
class B extends A{
static{
System.out.print("r1 ");
}
public B(){
System.out.print("r2 ");
}
{
System.out.print("r3 ");
}
static{
System.out.print("r4 ");
}
}
public class Test extends B{
public static void main(String[] args){
System.out.print("pre ");
new Test();
System.out.println("post ");
}
}
β
Correct Answer: (C)
r1 r4 pre b1 b2 r3 r2 post
Explanation: All static blocks execute first then blocks and constructor.