上文介绍了java-类生命周期(一),理论性比較强。认为太复杂的同学,瞟一下本文的样例加深理解。

先给道题目,看看答对没。

/**
* 类载入试验基类
*
* @author peter_wang
* @create-time 2014-5-14 上午8:41:23
*/
public class SuperClass {
static {
System.out.println("call super static method!");
} private SuperHelpClass mSuperSuperClass = new SuperHelpClass(); public SuperClass() {
System.out.println("call super constructor");
} public SuperClass(int flag) {
System.out.println("call super constructor " + flag);
} }
/**
* 类载入试验子类
*
* @author peter_wang
* @create-time 2014-5-14 上午8:43:07
*/
public class SubClass
extends SuperClass {
private SuperClass mSuperClassFirst = new SuperClass(1); public SubClass() {
System.out.println("call sub constructor");
} /**
* @param args
*/
public static void main(String[] args) {
SubClass subClass = new SubClass();
} static {
System.out.println("call sub static method!");
}
private static SuperClass mSuperClassSecond = new SuperClass(2); }

求运行结果。

原理剖析:

1.启动JVM,运行SubClass的入口main方法。意外发现类没载入,遂用ClassLoader载入.class文件

2.载入完SubClass,运行main之前须要先运行静态块,再运行静态域

3.父类优先于子类运行

4.运行main方法中的new SubClass(),运行父类全部变量初始化,再运行父类构造器

5.运行子类全部变量初始化,最后运行子类构造器

运行结果:

call super static method!
call sub static method!
call super constructor 2
call super constructor
call super constructor 1
call sub constructor

最新文章

  1. C语言中的system函数参数及其作用
  2. C#中将DataTable转成List
  3. 1.5 STL中大小相等的概念
  4. 2013年7月底至8月初51Aspx源码发布详情
  5. Recover damage pictures to see the crime scene
  6. no symbol version for module_layout
  7. wamp的安装使用(转)
  8. 百度地图 iOS SDK - 坐标转换方法
  9. PHP 分析1
  10. python自学基础1week
  11. echarts图表里label文字过长换行的方法
  12. Ubuntu忘记root密码怎么办?
  13. 在Windows环境下搭建Nginx文件服务器(简单实用版)
  14. Sublime Text3 离线安装Package Control并使用GBK编码 --转自https://blog.csdn.net/swhard/article/details/78930371
  15. CF961G Partitions
  16. 基于Docker+Prometheus+Grafana监控SpringBoot健康信息
  17. composer 用法
  18. o(1)取b > a,且b的二进制中1的个数等于a二进制中1的个数,且使b最小
  19. 代码实现自定义TableView
  20. this & super

热门文章

  1. oracle表类似:BIN$dJ5h8mA4Lr/gQAB/AQB0oA==$0 TABLE
  2. [BZOJ 2100] Apple Delivery
  3. [JavaEE] Apache Maven 入门篇(上)
  4. BZOJ-4706 B君的多边形 OEIS
  5. Git Learning Part III - working remotely (Github)
  6. vue路由history模式下打包node服务器配置
  7. vue-cli简介(中文翻译)
  8. MSSQL数据库设置单用户模式后无法连上解决办法
  9. ArcGIS Javascript API 加载高德在线地图扩展
  10. Linux 内核剖解(转)