在初始化一个类时,到底是先执行哪一部分,总体的执行顺序是什么样的呢,同样,当类被释放时,又是怎样一个顺序呢?先来看下面的代码好了。

package net.moon.insignificant.commonclass; class CommonSubClass extends CommonSupperClass { static { System.out.println("Common sub static initial"); } public CommonSubClass() { System.out.println("Common sub construct"); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub System.out.println("Common sub finalize"); super.finalize(); } } abstract class CommonSupperClass { public CommonSupperClass() { System.out.println("Common super construct"); } static { System.out.println("Common supper static initial"); } @Override protected void finalize() throws Throwable { // TODO Auto-generated method stub System.out.println("Common supper finalize"); super.finalize(); } } public class Demo { public static void main(String[] args) { // TODO Auto-generated method stub CommonSubClass css = new CommonSubClass(); css = null; System.gc(); } }

只要运行上面的代码,结果如下:

Common supper static initial Common sub static initial Common super construct Common sub construct Common sub finalize Common supper finalize

其实大家已经清楚,在初始化时,执行的顺序是:

1.  父类的静态代码块

2. 子类的静态代码块

3. 父类的构造方法

4. 子类的构造方法

释放资料时,执行的顺序是:

1. 子类的finalize方法

2. 父类的finalize方法

只是这里一个意外是:竟然父类为抽象类时也同样会调用父类的构造方法,看来抽象类在虚拟机内部还是被实例化了。

下一篇: Java牛角尖【004】:Final类可以有protected属性或方法吗?

转载于:https://www.cnblogs.com/moonsnow/archive/2009/05/29/6226858.html

Java牛角尖【003】:类初始化时的执行顺序相关推荐

  1. C#类在初始化时的执行顺序

    1: 子类静态变量 2: 子类静态构造函数 3: 子类非静态变量 4: 父类静态变量 5: 父类静态构造函数 6: 父类非静态变量 7: 父类构造函数 8: 子类构造函数 对于静态变量与静态构造函数而 ...

  2. java构造函数的执行顺序,java构造函数和初始化函数的执行顺序

    1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)>    main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...

  3. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  4. Scala多特质混入时的执行顺序

    多特质混入时的执行顺序 非要super指定父特质的做法

  5. vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用

    vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用 异步解决方案:async/await 多个await,同步拿到数据再处理 多个接口处理拿到数 ...

  6. java顺序结构类型,Java类的完整构造执行顺序

    这里只说一个完整的结果,至于为什么是这样的顺序,可以参考我以前的文章:深入剖析java类的构造方式 如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态 ...

  7. 神技巧!在Python类初始化时进行四种暗箱操作!

    Python 的类中,所有以双下划线__包起来的方法,叫魔术方法,魔术方法在类或对象的某些事件发出后可以自动执行,让类具有神奇的魔力,比如常见的构造方法__new__.初始化方法__init__.析构 ...

  8. java过滤器filter过滤相同url时的执行顺序

    java配置过滤器有两种方式: 第一种:web.xml中以filter-mapping标签方式配置,分为两种,一种是url-pattern,另一种是servlet-name. url-pattern方 ...

  9. python类中方法的执行顺序-Python实例化class的执行顺序实例方法

    Python中实例化class的执行顺序示例详解 前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的 ...

最新文章

  1. 数据库-SQL中like的用法
  2. 调用 标签打印软件_标签打印软件如何制作陶瓷标签模板
  3. 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集
  4. Linux 2.6.32-279.el6.x86_64 ANDROID SDK碰到”LIBC.SO.6: VERSION `GLIBC_2.14′ NOT FOUND”的解决方法(1)
  5. 获取滚动文本框TextArea焦点位置信息
  6. 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
  7. 交流电的有效值rms值_交流电路的功率三角因数原来是这样理解的
  8. 贴片电阻上写着“0”,所谓的“零欧电阻”,在电子电路中的用处很大
  9. 西安python_西安找工作|西安人才网|西安全职招聘信息-西安58同城
  10. C++提高部分_C++函数模板_案例_数组排序---C++语言工作笔记083
  11. CentOS 7 多网卡绑定
  12. Android支付实践(三)之银联支付功能(客户端+服务端)
  13. springboot 和springMVC interceptor使用
  14. 微信小程序 | 模仿百思不得其姐
  15. ios项目编译错误:error: Multiple commands produce 'Faun.app/Assets.car'
  16. windows网络编程 --网络聊天室(2)
  17. 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...
  18. 完美解决各种spring项目报错问题
  19. 后台模板vue-admin-template的安装
  20. DataGrip 用鼠标控制Query console中字体缩放大小

热门文章

  1. oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
  2. Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
  3. Mysql基础语法DDL、DML、DQL
  4. import是引进外部函数吗_vue3已正式发布,你学了吗
  5. dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...
  6. 链式存储结构 php,【PHP 实现数据结构】链式队列
  7. java post返回xml数据类型_Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据...
  8. 6000字说透,如何做好产品「适老化」!
  9. 不为人知的心理学效应
  10. 关于计算机考试网上操作的题目及答案,《计算机基础考试题及答案》.doc