我刚开始学习Java,并且在研究嵌套类(Nested Classes)的主题,尝试着写一些代码时突然出现了这个错误:
class Encloser
{
static int i;
static void m1()
{
System.out.println(i);
}
static void m2()
{
Enclosee.accessEncloser();
}
static class Enclosee
{
static void accessEncloser()
{
i = 1;
m1();
}
static void accessEncloserNew()
{
m2();
}
}
}
class EncloserTest
{
public static void main(String[] args)
{
Encloser ee = new Encloser();
Encloser.Enclosee e = new Encloser.Enclosee();
ee.m1();
ee.m2();
e.accessEncloser();
e.accessEncloserNew();Encloser.m1();
Encloser.m2();
Encloser.m1();
Encloser.Enclosee.accessEncloserNew();
Encloser.Enclosee.accessEncloser();
}
}
运行上述代码不会出现任何错误/异常。它只是运行而已。这里的困惑是,实例是如何能调用静态方法的?难道静态方法不像Ruby中的类方法吗?
欢迎提供任何解释 :)