当前位置: 代码迷 >> Java相关 >> 关于main调用非静态方法解决思路
  详细解决方案

关于main调用非静态方法解决思路

热度:5744   发布时间:2013-02-25 21:44:50.0
关于main调用非静态方法
Java code
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



------解决方案--------------------------------------------------------
Class A里写的Class B,是内部类,你可以理解为 是一个方法。那在static main方法里想new B(理解为调用 非static 方法,是不可以的。因为A 没有实例化)。
------解决方案--------------------------------------------------------
A.B b = new A().new B();
A.C c = new A.C();

这样就行


------解决方案--------------------------------------------------------
因为 不加static 相当与 这个内部类构造函数属于外部类对象的而不是外部类的 加了static这个内部类类属于这个外部类的
  相关解决方案