**java代码块的执行顺序,以及子类继承父类后的执行顺序**
package test;
class a{
int x=0;
int y=0;
{
System.out.println("a-父类非静态方法");
}
static{
System.out.println("a-父类静态方法");
}
public a(){
System.out.println("a-执行父类的无参构造");
}
public a(int x){
System.out.println("a-执行父类的有参构造");
}
public void print(){
System.out.println("a--我是父类的打印方法");
}
}
class b extends a{
int x=0;
int y;
static{
System.out.println("b-子类静态方法");
}
{
System.out.println("b-子类非静态方法");
}
public b(){
System.out.println("b-执行b类无参构造方法");
}
public b(int x){
System.out.println("b-执行b类有参 构造方法");
}
public void print(){
System.out.println("b-在子类中调用父类的super方法");
super.print();
System.out.println("b-我是子类的打印方法");
}
}
public class Test1 {
public static void main(String[] args) {
int x=0;
a a1=new a(x);
a1.print();
System.out.println();
b b1=new b();
}
}