上次已经为大家介绍过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工具网。
推荐阅读: