java构造代码块执行顺序怎么排?实例展示

上次已经为大家介绍过java中构造器执行顺序是怎样的主要内容了,今天再来为大家展示一下java构造代码块执行顺序是怎么排的。同样也会通过代码为大家进行展示,一起来看看吧。

在有继承的情况下。

定义父类SuperClass,代码展示如下:

/**
 * 父类构造器
 */
public class SuperClass
{
    {
        System.out.println("父类构造代码块,每次调用构造方法都会执行的");
    }
    /**
     * 父类无参构造方法
     */
    public SuperClass()
    {
        System.out.println("父类的默认构造方法");
    }
    /**
     * 重载,自定义父类带参构造方法
     * @param str
     */
    public SuperClass(String str)
    {
        System.out.println("父类的带参构造方法,参数为:" + str);
    }
    static
    {
        System.out.println("父类的静态代码块,程序启动后执行,只会执行一次");
    }
}

定义子类SubClass,继承SuperClass,代码展示如下:

/**
 * 子类构造器,继承SuperClass
 */
public class SubClass extends SuperClass
{
    static
    {
        System.out.println("子类的静态代码块,程序启动后执行,只会执行一次,先执行父类的,再执行子类的");
    }
    {
        System.out.println("子类构造代码块,每次调用构造方法都会执行的");
    }
    /**
     * 无参构造器
     */
    public SubClass()
    {
        //这里没有指定调用父类哪个构造器,会默认调用 super(),调用父类的无参构造器public SuperClass()
    }
    /**
     * 重载构造器,多传两个参数
     * @param str
     * @param str1
     */
    public SubClass(String str, String str1)
    {
        //必须写在构造器第一行,调用父类构造器 public SuperClass(String str)
        super(str);
        System.out.println("子类带参构造器:" + str1);
    }
}

实例化SubClass,代码展示如下:

public static void main(String[] args)
{
    System.out.println("--------------subClass1----------------");
    SubClass subClass1 = new SubClass();
    System.out.println("--------------subClass2----------------");
    SubClass subClass2 = new SubClass("子类第一个参数", "子类第二个参数");
}

执行以上代码,输出,代码展示如下:

-- -- -- -- -- -- --subClass1-- -- -- -- -- -- -- --
父类的静态代码块, 程序启动后执行, 只会执行一次
子类的静态代码块, 程序启动后执行, 只会执行一次, 先执行父类的, 再执行子类的
父类构造代码块, 每次调用构造方法都会执行的
父类的默认构造方法
子类构造代码块, 每次调用构造方法都会执行的
-- -- -- -- -- -- --subClass2-- -- -- -- -- -- -- --
父类构造代码块, 每次调用构造方法都会执行的
父类的带参构造方法, 参数为: 子类第一个参数
子类构造代码块, 每次调用构造方法都会执行的
子类带参构造器: 子类第二个参数

以上就是关于java构造代码块执行顺序怎么排的主要内容了。并且通过实际的代码为大家展示出来了。如果你对java知识感兴趣,想要了解更多常见问题,敬请关注奇Q工具网。

推荐阅读:

java中单个构造函数方法,图文详解

java中构造器是什么意思?它有哪些内容?

java构造函数使用方法,详细解析