Java子父类间静态代码块非静态代码块构造方法的执行顺序
Posted 追梦赤子心
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java子父类间静态代码块非静态代码块构造方法的执行顺序相关的知识,希望对你有一定的参考价值。
子类A继承父类B,A a=new A();
正确的执行顺序是:父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
也就是说非静态初始化块的执行顺序要在构造函数之前。
class FatherStaticTest { static { System.out.println("执行父类的静态代码块。"); } FatherStaticTest() { System.out.println("执行父类的不带参数的构造方法。"); } FatherStaticTest(String str) { System.out.println("执行父类的带参数的构造方法。"+str); } { int i = 1; int j = 1; int sum = (i+j); System.out.println("执行父类的构造代码块。"+sum); } } class SonStaticTest extends FatherStaticTest { static { System.out.println("执行子类的静态代码块。"); } SonStaticTest() { System.out.println("执行子类的不带参数的构造方法。"); } SonStaticTest(String str) { super(str); System.out.println("执行子类的带参数的构造方法。"+str); } { int i = 2; int j = 2; int sum = (i+j); System.out.println("执行子类的构造代码块。"+sum); } } public class SuperClass { public static void main(String[] args) { new SonStaticTest("a"); } }
执行完之后可以看到顺序如下:
执行父类的静态代码块。 执行子类的静态代码块。 执行父类的构造代码块。2 执行父类的带参数的构造方法。a 执行子类的构造代码块。4 执行子类的带参数的构造方法。a
以上是关于Java子父类间静态代码块非静态代码块构造方法的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章