package com.tju.lab;
/**
* Created by xiangyang.laixiang on 2016/8/2.
*/
public class A extends C{
B b= new B();
public A(){
System.out.println("A");
}
public static void main(String args[])
{
A a= new A();
}
}
class B{
public B(){
System.out.println("B");
}
}
class C{
B b = new B();
public C(){
System.out.println("C");
}
}
### BCBA
###从输出结果来看,在执行时先构造所继承的对象,然后自己的构造函数
* 在这里A集成C,所以先构造C,C没有继承,所以直接进行构造,先构造本身所包含对象B,输出B,然后调用本身构造函数输出C,构造完C控制权回到A,A中包含对象B,所以输出B,然后调用A本身构造函数输出A,最终答案是BCBA *
### 在构造时所包含的类对象实例化顺序要高于类对象构造函数本身
网友评论