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`,什么时候不应该?