码迷,mamicode.com
首页 > 编程语言 > 详细

java-类生命周期(二)

时间:2017-06-27 11:55:23      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:文件   cond   ade   font   试验   ram   mod   art   tor   

上文介绍了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-类生命周期(二)

标签:文件   cond   ade   font   试验   ram   mod   art   tor   

原文地址:http://www.cnblogs.com/yxysuanfa/p/7084366.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!