首页 > 代码库 > java-类生命周期(二)
java-类生命周期(二)
上文介绍了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
java-类生命周期(二)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。