面试题:类中方法调用顺序

164 阅读1分钟

public class A { static int i = 0; protected int j = 0;

static {
    i++;
    Timber.tag("long").e("A i:" + i);
}

{
    j++;
    Timber.tag("long").e("A j:" + j);
}

public A() {
    i++;
    j++;
    Timber.tag("long").e("A i:" + i + "    A j:" + j);
}

}

public class B extends A { static int i = 0;

static {
    i++;
    Timber.tag("long").e("B i:" + i);
}

{
    j++;
    Timber.tag("long").e("B j:" + j);
}

public B(){
    i++;
    j++;
    Timber.tag("long").e("B i:" + i+ "    B j:" + j);

}

}

由此可见:

父类静态代码块 子类静态代码块 父类代码块 父类构造函数 子类代码块 子类构造函数