首先初始化static对象,
也就是说static Table t2=new Table();先被初始化
然后是Table类中的static对象(static Bowl b1=new Bowl(1);)
再调用Bowl构建器

解决方案 »

  1.   

    呵呵,你看是很认真的啊!要彻底了解JAVA的编译机制是要花一番工夫的!
    这里的初始化我也看过了,首先初始化所有static对象,如果有继承,就先构造父类,然后子类,最后是构造MAIN中的对象
      

  2.   

    我觉的t2,t3只在t2.f2(1);t3.f3(1);中用到,如没有调用f2,f3.
    初始化时能否用static 块:   static {
          new Table();
          new Cupboard();    }
      

  3.   

    当某个class被java编译器装载(即遇到new或调用其静态成员)时,其初始化如下:
    有父类时-->装载父类-->初始化父类所有static成员(对象与数据成员)-->初始化子类所有static成员-->产生对象-->初始化父类所有non-static成员-->调用父类构造函数-->初始化子类所有non-static成员-->调用子类构造函数
    无父类时-->初始化所有static成员-->产生对象-->初始化所有non-static成员-->调用构造函数
      

  4.   

    to:singlehuang(singlehuang) 
    那main()函数什么时候调用呢
      

  5.   

    当然可以了,static 块 和 static语句一样,先执行。