在外部类中为什么可以直接访问内部类的私有成员?

在外部类中为什么可以直接访问内部类的私有成员?比如,root=root.next,这条语句出现在外部类的方法中,这里,root是定义在外部类中的一个内部类对象,而next是root对象的一个私有属性,为什么可以这样写?

内部类是一个特例,相当于友元类(java本身没有友元这个概念)
从语法的角度来说,这样做是方便的。封装性主要是避免调用者随意操作对象的私有成员,调用他们不知道的代码引起问题。但是你定义了外部类,显然内部类也是你定义的,你肯定对自己的代码很了解,所以这里限制反倒是多余。

http://blog.csdn.net/pdcxs007/article/details/19291481