B()
{this(12)--> B(int x) --> 先创建父类实例,类初始化:456 ok, --> 父类构造函数 A(), 打印: AAA ---> 子类初始化: 123 ---〉回到B(int x): CCC ---> 回到 B(): BBB.
2. 不明白你说的是那里的{}
{this(12)--> B(int x) --> 先创建父类实例,类初始化:456 ok, --> 父类构造函数 A(), 打印: AAA ---> 子类初始化: 123 ---〉回到B(int x): CCC ---> 回到 B(): BBB.
2. 不明白你说的是那里的{}
首先一个类应该运行构造函数,但是象这样的程序首先会运行括起来的语句。
现在从new B(),开始执行斧类,这样A执行完以后开始B,然后是B的构造函数,
因为THIS(12),所以会执行B(int x) ,因为JAVA的重载性,再执行后面。
在同一个类中,执行情况是这样的:
(1)先根据先后位置执行类中的静态初始化块(只执行一次)
(2)执行初始化块,每生成一个类实例,初始化块将调用一次
(3)然后才执行构造器的东东。