Nested top-level classes(static member class (or interface)) :
当我们在一个类A里面定义了另一个类B,并指定B的修饰符为static,那么编译器会把类B与其他普通类一样看待。其他类可以通过A.B来得到类B的入口。比如可以在其他类中通过import A.B来导入类B。类B与其他普通类的区别是B可以访问A中的静态成员。
![](http://hi.csdn.net/attachment/201112/17/0_13241212473R3E.gif)
Member classes :
我们在一个类A里面定义一个成员类B,B没有被关键字static修饰。成员类B可以访问类A中所有的字段和方法,不管是否是静态的都可以访问。
![](http://hi.csdn.net/attachment/201112/17/0_1324121194GDCd.gif)
Local classes :
Local内部类包含于一个代码块中,Local 内部类与本地变量类似,Local内部类的被访问权限局限于定义该Local内部类的代码块中。如若使Local内部类可以在代码块外部使用,则须使Local类部类实现一个较开放的接口。Local内部类不属于成员范畴,修饰符public, protected, private 和 static 在其上不可用。
![](http://hi.csdn.net/attachment/201112/17/0_1324121221jklY.gif)
Anonymous classes :
匿名内部类在本地内部类上更进一层:
![](http://hi.csdn.net/attachment/201112/17/0_1324121233j31z.gif)