Java类的加载顺序

来源:互联网 发布:网络人气奖颁奖词 编辑:程序博客网 时间:2024/06/08 04:54
单个类加载时,会按照静态代码块,代码块,构造函数的顺序进行加载。例如:
public class Main {    public static void main(String[] args)    {        Shape s=new Shape();            }}public class Shape {    static    {        System.out.println("shape静态初始化块已执行!");    }    {        System.out.println("shape初始化块已执行!");    }    public Shape()    {        System.out.println("Shape构造函数已执行!");    }}

执行结果如下:
shape静态初始化块已执行!
shape初始化块已执行!
Shape构造函数已执行!

当子类Circle继承父类Shape,加载子类时,会依次加载父类的静态代码块,子类的静态代码块,父类的代码块,父类的构造函数,子类的代码块,子类的构造函数。
public class Main {    public static void main(String[] args)    {        Circle c=new Circle(3);         }}public class Shape {    {        System.out.println("shape初始化块已执行!");    }    static    {        System.out.println("shape静态初始化块已执行!");    }    public Shape()    {        System.out.println("Shape构造函数已执行!");    }}public class Circle extends Shape{    static    {        System.out.println("Circle静态初始化块已执行!");    }    {        System.out.println("Circle初始化块已执行!");    }    public Circle(double radius)    {        System.out.println("Circle构造函数已执行!");    }}

执行结果如下:
shape静态初始化块已执行!
Circle静态初始化块已执行!
shape初始化块已执行!
Shape构造函数已执行!
Circle初始化块已执行!
Circle构造函数已执行!

0 0