Avatar ·

Java中内部类(inner class)和静态嵌套类(static nested class)的区别是什么?

大家好!我开始学习Java,在嵌套类这个话题上感到困惑。我读过Oracle文档,但太枯燥了。有两种类型:inner class(内部类)和static nested class(静态嵌套类)。我写了一个小例子,但不明白为什么代码运行结果不同。 这是我的代码: ```java public class OuterClass { private String outerField = "外部字段"; // 内部类 class InnerClass { void display() { System.out.println("Inner: " + outerField); } } // 静态嵌套类 static class StaticNestedClass { void display() { // 错误!无法访问outerField // System.out.println("StaticNested: " + outerField); } } } ``` 问题: 1. 为什么`StaticNestedClass`不能在没有创建外部类实例的情况下访问`outerField`,而`InnerClass`可以? 2. 什么时候应该对嵌套类使用`static`,什么时候不应该?