JAVA关于一个静态方法的有关问题

JAVA关于一个静态方法的问题
class outer{
static int a=10;
int b=20;
void f(){ //X1
System.out.println("hi!~~");

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

public class OUT1{

  public static void main (String[] args) {
 
 
 
  outer out=new outer();
  outer.Inner in=out.new Inner();
  in.g();
  System.out.println(out.b);
}
}



为什么X2行用f()函数的时候,X1不用static声明的?



------解决方案--------------------
X2 是在类 Inner 里,X1在类 outer里;
Inner 是内部类,outer是外部类;
那么X2可以随意调用X1处的东西。

如果你要在main()方法里,new()出对象之前,调用 函数f(),
那你需要在X1处 用static 声明,进而可以用 类名+“.”调用。

内部类 在表面看来是很简单,其实也是掌握java高级编程的必需。
深入地了解 内部类 ,你会发现更多有趣的知识。
(据说是这样,刚刚入门,共同学习)

------解决方案--------------------
X2 是在类 Inner 里,属于内部类;X1在类 outer里,属于外部类;
内部类可以随意调用外部类的东西。 

------解决方案--------------------
在静态方法中不能够引用非静态成员变量,非静态方法中可以直接调用静态方法和静态变量。X2 是内部类的一个方法;X1在是外部类的一个方法; 内部类可以随意调用外部类的里面的成员。建议你在对内部类和外部类做一个深入的理解!我只是个菜鸟,相互学习哈!