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不是静态的吗,不是可以不用创建他的对象了吗,请高手说明下好吗,谢谢~~
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不是静态的吗,不是可以不用创建他的对象了吗,请高手说明下好吗,谢谢~~
oi.g();
int c=30;
public static void g(){
f();
System.out.println(a+" "+c);
}
}
调用时 in.Inner.g();
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();
}
}
可以这么写,把内部类和内部类中的方法全写成静态的,这样就可以直接用类名去访问
static int a=10;
int b=20;
static void f(){
System.out.println("hi~~~"); }
class Inner2{
int c=30;
void g(){
f();
System.out.println(a+" "+c);
}
}
void g(){
Inner2 inner2=new Inner2();
inner2.g();
}}
public class TestStaticClass2{public static void main(String[] args){
Outer2 in=new Outer2();
in.g();
}
}
也可以这么写,在外部类中定义一个方法,
在方法中生成一个内部类,
这样可以直接调用内部类中的方法
static int a=10;
int b=20;
static void f(){
System.out.println("hi~~~"); }
class Inner3{
int c=30;
void g(){
f();
System.out.println(a+" "+c);
}
}
/*void g(){
Inner2 inner2=new Inner2();
inner2.g();
}*/
Inner3 getInner3(){
return new Inner3();
}
}
public class TestStaticClass3{public static void main(String[] args){
Outer3 in=new Outer3();
Outer3.Inner3 inner3 =in.getInner3();
inner3.g();
}
}
还可以写成这样,
这样可以直接在main中生成内部类的对象
然后直接调用内部类的方法