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

静态类为什么还要创建他的对象呀?搞不懂。该怎么处理

2012-02-01 
静态类为什么还要创建他的对象呀??,搞不懂。。。classOuter{staticinta10intb20staticvoidf(){System.out

静态类为什么还要创建他的对象呀??,搞不懂。。。
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里么?

热点排行