Avatar ·

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()`——这有效,但看起来有点奇怪。