Java父子类中静态代码块构造器执行顺序

本文详细解释了Java中静态代码块的执行优先级,以及静态代码块、父类和子类加载的顺序,强调了静态代码块在类加载时的初始化作用和构造方法的执行规则。
摘要由CSDN通过智能技术生成

如题:执行结果放最后 可以先自行思考

class B {

    public B(String b){
        System.out.println("父类B的构造函数");
    }

    static {
        System.out.println("父类B的中的静态代码块");
    }

    {
        System.out.println("父类B的中的非静态代码块 sya()");
    }
}

public class A extends B {
    public A() {
        super("B");
        System.out.println("子类A的构造函数");
    }

    static {
        System.out.println("子类A的中的静态代码块");
    }

    {
        System.out.println("子类A的中的非静态代码块 sya()1");
    }

    public static void main(String[] args) {
        A a = new A();
        System.out.println("A!");
        A a2 = new A();
        System.out.println("启动完成");
    }

}

知识点:

静态代码块 

        静态代码块是在Java中特有的一种代码块,在类被加载的时候就会执行,只执行一次,并且优先于主方法。它主要用于初始化静态变量

非静态代码块

        非静态代码块的作用和构造器一样,用于初始化实例变量的等操作,所以也称为构造代码块。        

        非静态代码块的执行特点:所有非静态代码块中代码都是在创建对象时自动执行,一定是先于构造器的代码执行,并且每次构造该类时都会被执行一次。

父子类顺序

        父类优先于子类被加载

注意:当父类中没有无参构造器时,在子类构造器中需使用super关键字来调用父类有参构造器

 

================最后执行顺序如下==============

3fabfa1481e8d9174b5efdb6593b1d05.png

 

总结一下:

被static修饰的代码块,是属于当前类的信息,是用来初始化类的信息。

所以①静态代码块的加载是        优先于        父子类的实例代码块构造方法;

其次②父类加载顺序        优先于        子类加载顺序;

然后③实例代码块        优先于        构造方法;

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值