Sonir...
If you trace up the constructors you will see at least one of the constructor in each class gets called. Class B may be baffling, but it still gets called becoz, super() actually calls a dummy constructor since class B doesnt have any constructor at all..
2. Class B calls the empty constructor from the class A (implicitily ) . So A2 is never touched..
3.private C(){ super(); } // C1
public C(
String s){
this();
System.out.println("C :"+s); } // C2
public C(int i){} // C3
Very obvious , Class c can only be constructed by 2 forms. private C() cant be used...
4. B1 is never called ? why?

it not even a constructor!!
Enjoy Sonir
Ragu
[ January 20, 2002: Message edited by: Ragu Sivaraman ]