zoukankan      html  css  js  c++  java
  • More on Class Loading and Initialization

      上一篇博客中对于类的加载和初始化进行了详细的说明,但上一篇博客代码中的main()所在的类为导出类,

    对其中一些问题的理解可能会引起误导和不明确,所以补充这篇博客进一步说明。以下面的代码为例进行说明:

    //File: P130_Practice5.py
    //Author: lxw
    //Time: 2014-05-31
    //Usage: P130 Practice 5.
    
    class A{
        static B b = new B();
        public A(){
            System.out.println("A constructor.");
        }
    }
    
    class B{
        public B(){
            System.out.println("B constructor.");
        }
    }
    
    class C{
        public C(){
            System.out.println("C constructor.");
        }
        public void show(){}
    }
    
    class E{
        static int i = print("WARNING.");
        public E(){
            System.out.println("E constructor.");
        }
        static int print(String s){
            System.out.println(s);
            return 1;
        }
    }
    
    class D extends A{
        B b = new B();
        static C c = new C();
    }
    
    public class P130_Practice5 {
        public static void main (String [] args){
            D d = new D();    // 顺序是: 先是加载完需要的类(只加载需要的类),然后才执行初始化。
            //D.c.show();    // 只加载
            E e = new E();    // 顺序是: 先是加载完需要的类(只加载需要的类),然后才执行初始化。
        }
    }

    Output:

    lxw@23:53:04:~/eclipse/java/javaComLine$ java P130_Practice5 
    B constructor.    
    C constructor.        
    A constructor.    
    B constructor.    
    WARNING.
    E constructor.

      需要注意的是:  

      B constructor.  -- 加载类A
      C constructor.  -- 加载类D
      A constructor.  -- A()
      B constructor.  -- 初始化类D
      WARNING.      -- 加载类E
      E constructor.  -- E() 

      所以我们可以看出对于每一条语句的执行,类的加载和初始化的顺序是:先加载完所有需要的类(只加载“需要”的类,

    不需要的不加载),然后才执行初始化。

  • 相关阅读:
    《程序员修炼之道:从小工到专家》阅读笔记02
    第二阶段团队冲刺10
    第二阶段团队冲刺09
    周总结
    第二阶段团队冲刺08
    第二阶段团队冲刺07
    小A和小B和幽灵追两人(双向BFS)
    C. 真假亚瑟王(暴力)
    小A的柱状图(栈的应用,找左右边界)
    小A买彩票
  • 原文地址:https://www.cnblogs.com/lxw0109/p/More_on_Initialization_and_class_loading.html
Copyright © 2011-2022 走看看