B()
{this(12)--> B(int x) --> 先创建父类实例,类初始化:456 ok, --> 父类构造函数 A(), 打印: AAA ---> 子类初始化: 123 ---〉回到B(int x): CCC ---> 回到 B(): BBB.
2. 不明白你说的是那里的{}

解决方案 »

  1.   

    建议你还是先找书看看,Thinking in java去掉{}当然不行,类里只有方法和成员变量,没见过你那个,它算是A的什么东西?二房?
      

  2.   

    为什么不是先执行构造函数,将类初使化,先输出AAA,再是456,ok?而是先输出456,ok,然后再是AAA,第二个问题,你的意思是指,java和c不一样,没有单独的语句?但是第2步括起来算什么?谢谢!!
      

  3.   

    这是不会规范的程序,但可以正确实行。但是第2步括起来算SUPER的类。
    首先一个类应该运行构造函数,但是象这样的程序首先会运行括起来的语句。
    现在从new B(),开始执行斧类,这样A执行完以后开始B,然后是B的构造函数,
    因为THIS(12),所以会执行B(int x) ,因为JAVA的重载性,再执行后面。
      

  4.   

    在4版的JAVA2参考大全7、8章里有非常详细的解释
      

  5.   

    dylanwolf解释的很清楚,同意他的解释。
    在同一个类中,执行情况是这样的:
    (1)先根据先后位置执行类中的静态初始化块(只执行一次)
    (2)执行初始化块,每生成一个类实例,初始化块将调用一次
    (3)然后才执行构造器的东东。