Lets go through the flow here
new test(); calls
test()
{
this(89); System.out.print("d");
}
the this(89) call calls
test(int p)
{
super(p); System.out.print("e");
}
super(p); call calls
A(int i)
{
this(); System.out.print("b");
}
this() call calls
A()
{
super(); System.out.print("a");
}
super() call calls constructor of Object class which prints nothing. Now the System.out.print("c"); in instance initializer block gets executed then System.out.print("a"); gets executed. the control will return back to
A(int i)
{
this();
System.out.print("b"); }
System.out.print("b"); is executed and control returns back to
test(int p)
{
super(p);
System.out.print("e"); }
System.out.print("e"); is executed then control returns back to
test()
{
this(89);
System.out.print("d"); }
So finally d is displayed. Now I think there is nothing happening like what you said. If you still have doubt please clarify more what doubt it is...
