Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序...
实例化子类时,父类与子类中的静态代码块、实例代码块、静态变量、实例变量、构造函数的执行顺序是怎样的?
代码执行的优先级为:
firest:静态部分
second:实例化过程
详细顺序为:
1.父类静态代码块与父类静态变量(取决于代码书写顺序)
2.子类静态代码块与子类静态变量(取决于代码书写顺序)
3.父类实例变量与父类代码块(取决于代码书写顺序)
4.父类构造函数
5.子类实例变量与父类代码块(取决于代码书写顺序)
6.子类构造函数
在JVM加载完类以后,类在被使用的时候初始化,静态部分只在类初始化的时候执行一次。
测试代码:
- class Father {
- Father() {
- LogUtil.log(System.currentTimeMillis() + " ------ 父类构造函数");
- }
- static {
- LogUtil.log(System.currentTimeMillis() + " ------ 父类静态代码块");
- }
- long x = getTime(" ------ 父类实例变量");
- {
- long time = System.currentTimeMillis();
- LogUtil.log(time + " ------ 父类代码块");
- }
- static long y = getTime(" ------ 父类静态变量");
- static long getTime(String who) {
- long time = System.currentTimeMillis();
- LogUtil.log(time + who);
- return time;
- }
- }
- class Child extends Father {
- Child() {
- LogUtil.log(System.currentTimeMillis() + " ------ 子类构造函数");
- }
- static long y = getTime(" ------ 子类静态变量");
- static {
- LogUtil.log(System.currentTimeMillis() + " ------ 子类静态代码块");
- }
- {
- long time = System.currentTimeMillis();
- LogUtil.log(time + " ------ 子类代码块");
- }
- long x = getTime(" ------ 子类实例变量");
- static long getTime(String who) {
- long time = System.currentTimeMillis();
- LogUtil.log(time + who);
- return time;
- }
- }
调用代码:
- new Thread(new Runnable() {
- @Override
- public void run() {
- new Child();
- LogUtil.log("分隔符 ------ 分隔符");
- new Child();
- }
- }).start();
执行结果:
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类静态代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类静态变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 子类静态变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 子类静态代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类实例变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类构造函数
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 子类代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 子类实例变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 子类构造函数
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 分隔符 ------ 分隔符
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类实例变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523353 ------ 父类构造函数
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523354 ------ 子类代码块
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523354 ------ 子类实例变量
- 11-03 20:02:03.350 7533-7881/? E/AKADDEMO: 1478174523354 ------ 子类构造函数
Java父类与子类中静态代码块 实例代码块 静态变量 实例变量 构造函数执行顺序...相关推荐
- java静态代码块和非静态代码块和构造函数执行顺序
一.同类中静态代码块,非静态代码块,构造方法的执行顺序 1. 执行顺序:静态代码块-->非静态代码块-->构造方法. 程序在执行时,首先执行静态代码块,且只执行一次.接下来再创建对象时(n ...
- 静态代码块、非静态代码块、构造函数执行顺序
静态代码块.非静态代码块.构造函数执行顺序 /*** 类的实例化顺序,静态代码块.非静态代码块.构造函数.* @author MING*/ class Person {static String na ...
- java先执行static还是构造函数_【Java基础】类的实例化、static、父类构造函数执行顺序...
重温java基础,以免自己以后犯原则性错误,这是最基本,最基础的东西. 先看结论: 一个类的实例化过程: 1,首先会执行类中static代码块(不管代码块是否在类的开头还是末尾处),如果这个类有父类, ...
- java 继承类 变量、静态变量、构造函数执行顺序
java 继承类 变量.静态变量.构造函数执行顺序 Java代码 class C{ static int prt(int i){ System.out.println(i); return i; ...
- C#构造函数、私有构造函数、静态构造函数与构造函数执行顺序
https://www.cnblogs.com/ArtofDesign/p/3603986.html 默认构造函数,如果没有为类指定任何构造函数,编译器会自动为类创建一个无参构造函数,用以初始化类的字 ...
- java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一.静态成员变量(Static) * 1.静态成员变量为类变量,所有对象共享同一内存空间 * 2.静态 ...
- java父类转子类_java中什么是继承,和继承的接口的关系?
继承的概念 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父 ...
- java父类与子类的构造方法_java中的加载顺序以及父类与子类的构造方法 | 学步园...
public class fatt { public static void main(String[] args) { animal a=new cat(9); } } class animal{ ...
- java 父类访问子类_java中父类访问子类变量
我们都知道,子类的方法可以访问父类的实例变量,这是因为子类继承父类就会获得父类的成员变量和方法:但是父类的方法水能访问子类的实例变量,因为父类根本无法知道它将被哪个子类继承,它的子类将会增加怎样的成员 ...
最新文章
- UI培训技术分享:设计大神都在用的10种技法!
- php将url出现 双斜杠,php-URL重写在末尾添加斜杠会破坏我的css链接
- 经过五年测试 维基利用HTML5迈入视频时代
- leetcode 136. Single Number
- java url下载ics_使用Microsoft Graph API处理外部(Internet / .ics)日历URL
- observable java_Observable基本用法(RxJava)
- SpringBoot项目集成Mybatis Plus(四)SQL映射文件
- java hashMap缓存简单实现
- python裂缝检测_通过opencv-python检测裂缝
- 腾讯云上海服务器稳定吗,腾讯云服务器上海机房速度怎么样 1M带宽是否够用
- linux启动分区丢,Linux装机因为分区丢失引导解决办法
- VMware安装虚拟机详细教程
- 00后测试员摸爬滚打近一年,为是否要转行或去学软件测试的学弟们总结出了以下走心建议
- 如何在matlab中表示e,Matlab中表达e的操作方法介绍
- C语言课设物资管理系统,C语言课设之物资管理系统.doc
- 关于发那科机器人程序偏移功能
- Nginx HLS压测工具之vegeta
- 蓝桥ROS机器人课程总结2022
- 八大排序算法 —— 归并排序
- 银行怎样处理坏账和贷款展期