Saturday, April 08, 2006

java : order of execution

Following code and output to illustrate the order of execution of consutrctor, initialization blocks

class InitSuper{
InitSuper(int x){System.out.println("super: 1-arg const"); }
InitSuper() { System.out.println("super:no-arg const"); }
static { System.out.println("super:1st static init"); }
{ System.out.println("super:1st instance init"); }
{ System.out.println("super:2nd instance init"); }
static { System.out.println("super:2nd static init"); }
}

class Init extends InitSuper{
Init(int x) { System.out.println("1-arg const"); }
Init() { System.out.println("no-arg const"); }
static { System.out.println("1st static init"); }
{ System.out.println("1st instance init"); }
{ System.out.println("2nd instance init"); }
static { System.out.println("2nd static init"); }
public static void main(String [] args) {
new Init();
new Init(7);
}

Output
super:1st static init
super:2nd static init
1st static init
2nd static init
super:1st instance init
super:2nd instance init
super:no-arg const
1st instance init
2nd instance init
no-arg const
super:1st instance init
super:2nd instance init
super:no-arg const
1st instance init
2nd instance init
1-arg const

No comments: