我知道java中的静态字段。但不知道为什么我们创建一个静态类。有什么想法吗?
答案 0 :(得分:17)
无法声明顶级类static
,只能嵌套类:
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
区别在于:
以上内容摘自Java OO教程。您可以阅读更多here。
答案 1 :(得分:17)
class Outer {
int a;
class Inner {
void test() {
System.out.println(a);
}
}
}
通常,内部类可以引用其拥有类的字段,如上面的(伪)示例中所示。所以Inner的一个实例可以访问Outer中的字段/方法/等。
但这需要每个Inner实例都有一个与之关联的外部实例。所以你做不到
new Inner();
但必须做
new Outer().new Inner();
在某些情况下,这是不可取的 - 比如你需要确保你的外部实例可能被垃圾收集,或者你需要使内部实例独立于外部。在这种情况下,您可以将其更改为
static class Inner {
在这种情况下,现在您可能不再像以前那样引用“a”,但作为交换,您根本不需要具有Outer实例来拥有Inner的实例。
答案 2 :(得分:0)
您不能声明静态类。你唯一能做的就是声明静态内部类,这意味着你不需要外部类的实例来访问它。