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

之前写过一个《 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)还要强调的一点是:不管一个类实例化几次,静态语句块都仅仅执行一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值