继承时构造顺序

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 *

### 在构造时所包含的类对象实例化顺序要高于类对象构造函数本身

你可能感兴趣的:(继承时构造顺序)