Java对象初始化顺序

发布时间:2019-11-19 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Java对象初始化顺序脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

初始化顺序:
1.有无父类?
有:
将父类加载进内存。直到将所有的父类加载完毕。再从顶层父类按照代码的顺序执行静态代码,执行完最顶层的,在执行下一层的,依次类推,直到执行完所有的静态代码。
(1)如果有初始化子类对象。那么同样会先调用父类的构造器,并且会先执行最底层父类的构造器。
先将所有成员属性设置成为默认值,接着依据代码的顺序初始化所有成员。初始化完毕之后,再执行构造器内的方法。初始化完父类后,依次初始化子类的。

无:
那么接下来的步骤跟(1)处的处理方式是一样的。

下面给出例子:

package org.csp.test;  public class Test extends Insect{     PRivate int k = printInIT("Test initialized");    ----(11),类似的要先被清0,然后再调用printInit()方法     public Test() {         @R_406_2663@tem.out.println("k ="+k);                    ---(12) 初始化属性后,执行构造器内的代码         System.out.println("j ="+j);                    ----(13)     }     private static int x2 = printInit("Test X2 initialized");  ---(3)因为是静态成员     public static void main(String[] args) {         System.out.println("haha");             ---(4)         Test t = new Test();              ---(5)创建对象,接下去要初始化成员对象,但是要先初始化父类的     } } class Insect {                                         ------(7)先将所有的成员设置为默认值     private int i =9 ;   -----(7)先被设置为默认值0    -----(8)   按照代码顺序初始属性      protected int j;                                  -----(7)被设置为默认值0      static{         System.out.println("hahaaaa");       }                                                 **----(1)最先执行**         Insect() {         System.out.println("i = "+i+",j = "+j);       ----(9) 执行构造器内的代码         j=39;                                            ------(10)此处已经将父类初始化完毕,返回去初始子类对象     }     private static int x1= printInit("static Insect.X1 initialized");   ----(2static int printInit(String s) {         System.out.println(s);         return 47;     } } 

执行结果

hahaaaa static Insect.X1 initialized Test X2 initialized haha i = 9,j = 0 Test initialized k =47 j =39 

脚本宝典总结

以上是脚本宝典为你收集整理的Java对象初始化顺序全部内容,希望文章能够帮你解决Java对象初始化顺序所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。