Java中内部类(inner class)和静态嵌套类(static nested class)的区别是什么?
大家好!我刚开始学习Java,遇到了嵌套类这个话题。我读了不同的资料,但始终无法明确理解inner class(内部类)和static nested class(静态嵌套类)之间的区别。它们似乎都在另一个类内部声明,但行为却不同。
例如,我有这样一段代码:
```java
public class Outer {
private String message = "Hello from Outer";
class Inner {
public void print() {
System.out.println(message);
}
}
static class StaticNested {
public void print() {
// 这里我无法直接访问message
// System.out.println(message); // 编译错误
}
}
}
```
问题:
1. 为什么Inner可以访问message字段,而StaticNested不能?它们都在Outer内部。
2. 如何正确创建这些类的实例?我试过`new Outer().new Inner()`——这有效,但看起来有点奇怪。