Java中构造方法、静态方法、非静态方法执行顺序
下面为代码:
/**
* 测试代码执行顺序
* 父类
*
* @author Mona
*
*/
public class A {
static {
System.out.println("父类(A)-----静态方法");
}
public A() {
System.out.println("父类(A)-----构造方法");
}
{
System.out.println("父类(A)-----输出非静态");
}
}
public class B extends A{
static {
System.out.println("子类(B)-----静态方法");
}
public B() {
System.out.println("子类(B)-----构造方法");
}
{
System.out.println("子类(B)-----输出非静态");
}
}
public class C {
public static void main(String[] args) {
B b = new B();
}
}
输出结果:
父类(A)-----静态方法
子类(B)-----静态方法
父类(A)-----输出非静态
父类(A)-----构造方法
子类(B)-----输出非静态
子类(B)-----构造方法
可以看出,实例对象时输出顺序:
父类静态方法---------->子类静态方法---------->父类非静态方法和构造方法-------->子类非静态方法和构造方法