标签:初始化 顺序 java 静态 子类 代码 执行 创建对象 父类
▪ 代码块作用:用来初始化类、对象的信息
★ 执行过程:new了某类的新对象的时候
前提:某类需要先存在,即虚拟机jvm把某个类从硬盘上加载到内存【类加载到内存】
执行静态代码块,加载静态成员属性、静态方法和普通方法。
① 执行静态代码块【随着类的加载而执行】
如果有静态成员变量,也会执行,至于和静态代码块执行先后顺序看代码位置。
② 执行构造代码块【类加载完成后,开始创建对象。创建对象前,先创建对象的资源】
如果有普通成员变量,也会执行,至于和构造代码块执行先后顺序看代码位置。
③ 执行构造器,完成创建对象
★ 如果有继承关系:
① 执行父类、子类的静态代码块(静态资源)【随着类的加载而执行】
如果有静态成员变量,也会执行,至于和静态代码块执行先后顺序看代码位置。
父类静态代码块—>父类静态变量–>子类静态代码块–>子类静态变量
或者是:父类静态变量—>父类静态代码块–>子类静态变量–>子类静态代码块
② 执行构造代码块【类加载完成后,开始创建对象。创建对象前,先创建对象的资源】
如果有普通成员变量,也会执行,至于和构造代码块执行先后顺序看代码位置。
③ 执行构造器,完成创建对象
父类代码块—>父类普通成员变量–>父类构造函数–>子类代码块–>子类普通成员变量–>子类构造器
或者是:父类普通成员变量–>父类代码块—>父类构造函数–>子类普通成员变量–>子类代码块–>子类构造器
总结:最先执行静态代码块(随着类的加载而执行),然后在执行构造器前,先执行构造代码块
标签:初始化,顺序,java,静态,子类,代码,执行,创建对象,父类 来源: https://www.cnblogs.com/shan333/p/16544187.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。