一直不能理解java 中这三者的执行顺序。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
B b = new B();
}
static class A{
static{
System.out.println("父类静态方法") ;
}
{
System.out.println("父类非静态方法") ;
}
public A(){
System.out.println("父类构造");
}
}
static class B extends A{
static{
System.out.println("子类静态方法") ;
}
{
System.out.println("子类非静态方法") ;
}
public B(){
System.out.println("子类构造");
}
}
输出的结果是:
父类静态方法
子类静态方法
父类非静态方法
父类构造
子类非静态方法
子类构造
====================================
静态变量只执行一次,与类同时创建,首先是执行static 修饰的方法,接着是非静态方法,构造方法。(子类的非静态方法在父类的构造方法之后执行)