我刚刚再次开始使用 Java,正在研究嵌套类
主题,并且正在尝试一些东西,突然间,发生了这样的事情:
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();
}
}
运行上面的代码不会给出任何错误/异常。它只是运行。这里的困惑是,实例如何能够在这里调用 Static Methods
? 静态方法
不像Ruby
中的类方法
吗?
任何解释将不胜感激:)
最佳答案
这是语言允许的:
ee.m1();
但你应该这样写:
Encloser.m1();
您的编译器应该发出如下警告,以通知您:
source_file.java:37: warning: [static] static method should be qualified by type name, Encloser, instead of by an expression ee.m1();
关于Java - 实例能够访问静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21407335/