I'm getting ready for OCJP. and in one question they asked what this code will print: I thought this code would not compile. (I have never seen this syntax. I'm self taught). can someone please explain this code to me? and why does it print?
class Employee {
  static int i = 10;  {
      i = 15;
      System.out.print(" Employee "+i);
  }
  static { System.out.print(" Employee static "+i); }    
}
class Manager extends Employee { 
  static {
    i = 45;
    System.out.print(" Manager static ");
  }{
    i = 30;
    System.out.print(" Manager "+i);
  }
}
class Owner extends Manager{
  static { System.out.println("Owner"); }
}
public class TestClass {    
  public static void main(String[] args) {
      Manager m = new Manager();
  }
the output:
Employee static 10 Manager static Employee 15 Manager 30
