能够访问,而是说“我们必须说明白想访问哪个变量”,首先,变量 i 是不是 Second 的成员变量,这是一个事实,所以不用用 Second.i 来访问.
能够访问说的是“可见性”,Second 类可以直接访问 Inner 的成员方法和变量,只是可见性的允许。我们知道如果 Inner 不是 Second 的内部类时,我们只能通过 get / set 方法来访问 Inner 的成员变量,而 Inner 是内部类时就没有这个可见性的限制。
建议你先把你的类编译后生成的2个 class 文件复制到其它不是 Java Source Folder 的文件夹,然后用 Eclipse 双击打开它,这时 Eclipse 不能自动显示源码而是显示二进制的查看器窗口,我们可以在这个窗口中看到 eclipse 如何理解这个编译后的文件,这也告诉我们 Java 编译器是如何处理内部类的,一般我们会看到一个名字带有 $ 的成员变量,比如 $this 这样的, 就是 说 Java 编译器自动帮我们生成了一个内部类和它外面类之间的关联的对象,通过这个对象来访问彼此的成员变量。