class A{}class C{}class D{}public class aa extends A{  // 基类A 在实例化前被装载
C  cc;  // (组合)类在实例化前装载, 还是在实例化时被装载
D  dd;

public static void main(String[] args)
{
A a = new A();
}
}

解决方案 »

  1.   

    按你要问的意思,那就是在实例化时被装载动态装载,如果存在static成员初始化的话,就会在初始化之前装载
      

  2.   

    C and D are not loaded in this case.
      

  3.   

    同上
    只有在NEW的时候才装载
      

  4.   

    to determine when a class is loaded, use static blocks, eg:class A {
      static {
        System.out.println("Class A is loaded.");
      }
    }class B {
      static {
        System.out.println("Class B is loaded.");
      }
    }public class Test {  // a testing class
      public static void main(String[] args) {
        A a;
        B b;
        //till now, no classes is loaded
        a = new A();
        b = new B();
      }
    }
      

  5.   

    class A{
    static{
    System.out.println("A.static");
    }
    A(){
    System.out.println("A()");
    }
    }class C{
    static{
    System.out.println("C.static");
    }
    C(){
    System.out.println("C()");
    }
    }class D{
    static{
    System.out.println("D.static");
    }
    D(){
    System.out.println("D()");
    }
    }public class AA extends A{  // 基类A 在实例化前被装载
    C c = new C();
    D d = new D();
    AA(){
    System.out.println("AA()");
    }
    static{
    System.out.println("AA.static");
    }
    public static void main(String[] args)
    {
    AA a = new AA();
    }
    }
    好好看一下这个例子,就行了!