关于创建子类对象时,父类中成员变量初始化,和构造函数执行的有关问题

关于创建子类对象时,父类中成员变量初始化,和构造函数执行的问题
本帖最后由 Mr__lu 于 2015-05-31 23:53:57 编辑
class A{

C c = new C();

public A(){
System.out.println("A con................");
}

C cc = new C();

}

class B extends A{
public B(){
System.out.println("B con................");
}
}

class C{
public C(){
System.out.println("C con.............");
}
}

public class Test {
public static void main(String[] args){
new B();
}
}


程序输出:
C con.............
C con.............
A con................
B con................

请问:
为什么会输出两个C con......?
为什么不先执行A类的构造方法?
------解决思路----------------------
因为你new了两个C
先初始化变量,再执行构造方法

去看看java初始化顺序就明白了
------解决思路----------------------
java先初始化成员变量,然后再调用构造方法
看下《java编程思想》