Java牛角尖【003】:类初始化时的执行顺序
在初始化一个类时,到底是先执行哪一部分,总体的执行顺序是什么样的呢,同样,当类被释放时,又是怎样一个顺序呢?先来看下面的代码好了。
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】:类初始化时的执行顺序相关推荐
- C#类在初始化时的执行顺序
1: 子类静态变量 2: 子类静态构造函数 3: 子类非静态变量 4: 父类静态变量 5: 父类静态构造函数 6: 父类非静态变量 7: 父类构造函数 8: 子类构造函数 对于静态变量与静态构造函数而 ...
- java构造函数的执行顺序,java构造函数和初始化函数的执行顺序
1,静态变量.静态代码块.变量.普通代码块.mian方法.构造函数的执行顺序是:(静态变量.静态代码块)> main方法 >(变量.普通代码块)>构造函数. 2,如果子类调用了 ...
- java 静态块初始化_简单了解java中静态初始化块的执行顺序
这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...
- Scala多特质混入时的执行顺序
多特质混入时的执行顺序 非要super指定父特质的做法
- vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用
vue 请求时方法执行顺序问题,异步请求无法同时处理多个接口,使用同步顺序执行:async/await使用 异步解决方案:async/await 多个await,同步拿到数据再处理 多个接口处理拿到数 ...
- java顺序结构类型,Java类的完整构造执行顺序
这里只说一个完整的结果,至于为什么是这样的顺序,可以参考我以前的文章:深入剖析java类的构造方式 如果父类有静态成员赋值或者静态初始化块,执行静态成员赋值和静态初始化块 如果类有静态成员赋值或者静态 ...
- 神技巧!在Python类初始化时进行四种暗箱操作!
Python 的类中,所有以双下划线__包起来的方法,叫魔术方法,魔术方法在类或对象的某些事件发出后可以自动执行,让类具有神奇的魔力,比如常见的构造方法__new__.初始化方法__init__.析构 ...
- java过滤器filter过滤相同url时的执行顺序
java配置过滤器有两种方式: 第一种:web.xml中以filter-mapping标签方式配置,分为两种,一种是url-pattern,另一种是servlet-name. url-pattern方 ...
- python类中方法的执行顺序-Python实例化class的执行顺序实例方法
Python中实例化class的执行顺序示例详解 前言 本文主要介绍了关于Python实例化class的执行顺序的相关内容,下面话不多说了,来一起看看详细的介绍吧 Python里对类的实例化时有怎样的 ...
最新文章
- 数据库-SQL中like的用法
- 调用 标签打印软件_标签打印软件如何制作陶瓷标签模板
- 四全集学python选哪种电脑_“Python教程哪个版本最适合学习?“python教程全集
- Linux 2.6.32-279.el6.x86_64 ANDROID SDK碰到”LIBC.SO.6: VERSION `GLIBC_2.14′ NOT FOUND”的解决方法(1)
- 获取滚动文本框TextArea焦点位置信息
- 使用.NET Core创建Windows服务(二) - 使用Topshelf方式
- 交流电的有效值rms值_交流电路的功率三角因数原来是这样理解的
- 贴片电阻上写着“0”,所谓的“零欧电阻”,在电子电路中的用处很大
- 西安python_西安找工作|西安人才网|西安全职招聘信息-西安58同城
- C++提高部分_C++函数模板_案例_数组排序---C++语言工作笔记083
- CentOS 7 多网卡绑定
- Android支付实践(三)之银联支付功能(客户端+服务端)
- springboot 和springMVC interceptor使用
- 微信小程序 | 模仿百思不得其姐
- ios项目编译错误:error: Multiple commands produce 'Faun.app/Assets.car'
- windows网络编程 --网络聊天室(2)
- 鸿蒙系统能把游戏窗口化吗,家里装上华为智慧屏S系列,这三个功能,让我爱不释手!...
- 完美解决各种spring项目报错问题
- 后台模板vue-admin-template的安装
- DataGrip 用鼠标控制Query console中字体缩放大小
热门文章
- oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
- Golang——指针的使用、数组指针和指针数组、指针与切片、指针与结构体、多级指针
- Mysql基础语法DDL、DML、DQL
- import是引进外部函数吗_vue3已正式发布,你学了吗
- dns服务器v6解析 windows_04:缓存DNS、Split分离解析、电子邮件通信、Web服务器项目实战...
- 链式存储结构 php,【PHP 实现数据结构】链式队列
- java post返回xml数据类型_Java 通过HttpURLConnection Post方式提交xml,并从服务端返回数据...
- 6000字说透,如何做好产品「适老化」!
- 不为人知的心理学效应
- 关于计算机考试网上操作的题目及答案,《计算机基础考试题及答案》.doc