Kha*_*aza 10 java static class
可能重复:
Java中的静态嵌套类,为什么?
我知道java中的静态字段.但不知道为什么我们创建一个静态类.任何的想法?
Ste*_*ker 18
class Outer {
int a;
class Inner {
void test() {
System.out.println(a);
}
}
}
Run Code Online (Sandbox Code Playgroud)
通常,内部类可以引用其拥有类的字段,如上面的(伪)示例中所示.因此Inner的实例可以访问Outer中的字段/方法/等.
但是这需要每个Inner实例都有一个与之关联的外部实例.所以你做不到
new Inner();
Run Code Online (Sandbox Code Playgroud)
但必须这样做
new Outer().new Inner();
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这是不可取的 - 例如,您需要确保您的外部实例可能会收集垃圾,或者您需要使内部实例独立于外部.在这种情况下,您可以将其更改为
static class Inner {
Run Code Online (Sandbox Code Playgroud)
在这种情况下,现在您可能不再像以前那样引用"a",但作为交换,您根本不需要具有Outer实例来拥有Inner实例.
NPE*_*NPE 17
无法声明顶级类static,只有嵌套类可以是:
class OuterClass {
...
static class StaticNestedClass {
...
}
class InnerClass {
...
}
}
Run Code Online (Sandbox Code Playgroud)
不同之处在于:
以上内容摘自Java OO教程.你可以在这里阅读更多.