• 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


  • 相关阅读:
    php入门到精通(复习笔记)
    MySQL的基础(优化)3
    php之Apache压力测试
    DOS下常用命令
    php连接MySQL分析
    php-memcached详解
    php 四种基本排序算法
    MySQL的基础(优化)2
    SQL入门之集合操作
    SQL入门之多表查询
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/7084366.html
Copyright © 2020-2023  润新知