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() 

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

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

  • 相关阅读:
    ansible register 之用法
    vim 多行注释和取消注释
    开启 ssh 的 root 登录
    HAproxy 添加多个配置文件
    1002. A+B for Polynomials (25)
    Java中浮点数能连续精确表示整数的范围
    1001. A+B Format (20)
    1003. 我要通过!(20)
    1009. 说反话 (20)
    1006. 换个格式输出整数 (15)
  • 原文地址:https://www.cnblogs.com/lxw0109/p/More_on_Initialization_and_class_loading.html
Copyright © 2011-2022 走看看