日期:2014-05-20  浏览次数:20635 次

静态类为什么还要创建他的对象呀??,搞不懂。。。
class   Outer{
static   int   a=10;
int   b=20;
static   void   f(){
System.out.println( "hi~~~ ");

}
static   class   Inner{
int   c=30;
public   void   g(){
f();
System.out.println(a+ "   "+c);
}
}

}
public   class   TestStaticClass{

public   static   void   main(String[]   args){
Outer   in=new   Outer();
in.g();
}
}
Inner类为Outer类的静态类,我创建了Outer类的对象,为什么不能直接调用g(),Inner不是静态的吗,不是可以不用创建他的对象了吗,请高手说明下好吗,谢谢~~

------解决方案--------------------
Inner是静态的嵌套类它只能在Outer类中使用
------解决方案--------------------
Outer.Inner oi = new Outer().new Inner();
oi.g();

------解决方案--------------------
static class Inner{
int c=30;
public static void g(){
f();
System.out.println(a+ " "+c);
}
}
调用时 in.Inner.g();
------解决方案--------------------
按照报错信息,我认为有可能是static只是对类定义为静态,但是里面的方法还是要等new对象的时候才能产生.
------解决方案--------------------
呵呵,看来楼主调用有点心急啊,好比孕妇肚子里面有个婴儿,你想直接从孕妇是否哭笑来判断婴儿的,是不是说不过去啊
------解决方案--------------------
class Outer{
static int a=10;
int b=20;
static void f(){
System.out.println( "hi~~~ ");

}
static class Inner{
static int c=30;
public static void g(){
f();
System.out.println(a+ " "+c);
}
}


}
public class TestStaticClass{

public static void main(String[] args){
//Outer in=new Outer();
Outer.Inner.g();
}
}
可以这么写,把内部类和内部类中的方法全写成静态的,这样就可以直接用类名去访问
------解决方案--------------------
g方法不是在static class Inner里么?