java声明子类时,静态语句块、实例代码块、构造器方法这3者的调用顺序

来源:互联网 发布:远程桌面连接软件 编辑:程序博客网 时间:2024/05/20 16:33

之前写过一个《 java中静态语句块、实例代码块、构造器方法这3者的调用顺序》,但只是针对一个类而言的。当遇到两个类时,当然这两个类之间是继承关系。那么在声明一个子类时,这3者的调用关系,又是什么样的呢?


1、测试代码:

/** * created by cxh on 17/7/27 */class Base{    //静态语句块    static{        System.out.println("执行基类的静态语句块!");    }    //构造器方法    Base(){        System.out.println("执行基类的构造器方法!");    }    //构造代码块    {        System.out.println("执行基类的构造代码块!");    }}public class TempTest extends Base {    //静态语句块    static{        System.out.println("执行子类的静态语句块!");    }    //构造器方法    TempTest(){        System.out.println("执行子类的构造器方法!");    }    //构造代码块    {        System.out.println("执行子类的构造代码块!");    }    public static void main(String[] args){        TempTest a=new TempTest();        System.out.println("----------------");        TempTest b=new TempTest();    }}


2、测试结果:

执行基类的静态语句块!执行子类的静态语句块!执行基类的构造代码块!执行基类的构造器方法!执行子类的构造代码块!执行子类的构造器方法!----------------执行基类的构造代码块!执行基类的构造器方法!执行子类的构造代码块!执行子类的构造器方法!


3、结果说明:

(1)一个类中,3者执行顺序:静态语句块、实例代码块、构造器方法。

(2)两个类中。声明了子类后,执行顺序:父类静态代码块、子类静态代码块、父类实例代码块、父类构造器方法、子类实例代码块、子类构造器方法。

(3)还要强调的一点是:不管一个类实例化几次,静态语句块都仅仅执行一次。

阅读全文
0 0
原创粉丝点击