Java类加载机制中最重要的就是程序初始化过程,其中包含了静态资源,非静态资源,父类子类,构造方法之间的执行顺序。今天就来理一理这之间的关系
先上代码:
public class test_no {
public static void main(String[] args){
cat c=new cat();
}
}
class animal
{
{
System.out.println("animal");
}
static{
System.out.println("animal_static");
}
public void f()
{
System.out.println("animal_normal");
}
public static void f1()
{
System.out.println("animal_normal_static");
}
public animal()
{
System.out.println("animal_create");
}
}
class cat extends animal
{
{
System.out.println("cat");
}
static{
System.out.println("cat_static");
}
public void f()
{
System.out.println("cat_normal");
}
public static void f1()
{
System.out.println("cat_normal_static");
}
public cat()
{
super();
System.out.println("cat_create");
}
}
输出结果如下:
结论1:父类的静态代码块 > 子类的静态代码块 > 父类的普通代码块 > 父类的构造方法 > 子类的普通代码块 >子类的构造方法(其余方法未被调用不会执行)