Examveda
Examveda

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 ");
	}
}

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.

This Question Belongs to Java Program >> Declaration And Access Control

Join The Discussion

Related Questions on Declaration and Access Control