
class A1 {

  protected int i = 1;

    { System.out.println("step 1: code block inside A1");}

  public A1() {
    System.out.println("step 2: constructor inside A1");
    m();
  }

  public void m() {
    System.out.println("method m in A1, i = " + i);
  }

}


class B1 extends A1 {

  protected int j = i+1;

    { System.out.println("step 3: code block inside B1");}

  public B1() {
    System.out.println("step 4: constructor inside B1");
    m();
  }

  public void m() {
    System.out.println("method m in B1, i = " + i + " j = " + j);
  }

}

public class InitTest1 {

  public static void main(String[] args) {

    A1 a1 = new A1();
    System.out.println("--------------------------------");
    B1 b1 = new B1();

  }
}
