码迷,mamicode.com
首页 > 其他好文 > 详细

More on Class Loading and Initialization

时间:2014-06-02 07:58:13      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

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

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

bubuko.com,布布扣
//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();    // 顺序是: 先是加载完需要的类(只加载需要的类),然后才执行初始化。
    }
}
bubuko.com,布布扣

Output:

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

  需要注意的是:  

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

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

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

More on Class Loading and Initialization,布布扣,bubuko.com

More on Class Loading and Initialization

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/lxw0109/p/More_on_Initialization_and_class_loading.html

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