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 ");
}
}
A. r1 r4 pre b1 b2 post
B. pre r1 r4 b1 b2 r2 r3 post
C. r1 r4 pre b1 b2 r3 r2 post
D. r1 r4 pre b1 b2 post r3 r2
E. Compilation fail
Answer: Option C
Solution(By Examveda Team)
All static blocks execute first then blocks and constructor.Blocks and constructor executes (super class block then super class constructor, sub class block then sub class constructor).
Sequence for static blocks is super class first then sub class.
Sequence for blocks is super class first then sub class.
Related Questions on Declaration and Access Control
What is the default access modifier for class members in Java if no access modifier is specified?
A. public
B. protected
C. private
D. package-private
A. private
B. public
C. protected
D. package-private
What keyword is used to declare a constant in Java, which is implicitly final and static?
A. final
B. const
C. static
D. constant
A. protected
B. private
C. public
D. default
Join The Discussion