class A
{
public A()
{
  System.out.println("I am a");
}

public static void main(String arg[])
{
  A a = new A();
  //B b = new B();
  C c = new C();
  D d = new D();
}

class B
{
public B()
{
System.out.println("I am b");
}
}

static class C
{
public C()
{
System.out.println("I am c");
}
}
} class D
{
public D()
{
System.out.println("I am d");
}
}为什么在A类里面写的类B就不能直接调用构造函数(必须要在类名前加static,像类C这样)
  而在A类外面写的类D就可以直接被调用构造函数,不需要在类D前加static

解决方案 »

  1.   

    B属于A的内部类,也就是A的成员变量,想使用成员变量就必须先实例化它所在的类,原因就是B是成员变量,
    而加上static就属于静态变量默认是A.B全名,因为在A的静态方法里边所以不加A也可以调用
      

  2.   

    B是内部类   要用它你的首先把A创建好才行,C虽然写在A的内部,但Static关键字将它变为静态类,而非内部类了。 
      

  3.   

    这样就好了 a.new B()
    必须要现有外部类的实例