首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于main调用非静态方法,该怎么处理

2012-08-30 
关于main调用非静态方法Java codeclass A{public A(){System.out.println(I am a)}public static void

关于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

[解决办法]
B属于A的内部类,也就是A的成员变量,想使用成员变量就必须先实例化它所在的类,原因就是B是成员变量,
而加上static就属于静态变量默认是A.B全名,因为在A的静态方法里边所以不加A也可以调用
[解决办法]
B是内部类 要用它你的首先把A创建好才行,C虽然写在A的内部,但Static关键字将它变为静态类,而非内部类了。
[解决办法]
这样就好了 a.new B()
必须要现有外部类的实例

热点排行