内部类
外部类上一级程序单元是包,只有两个作用域,同一包河任何位置:default, public 。
内部类的上一级程序单元是外部类,具有四个作用域,同一类:private,同一包:default,父子类:protected,任何位置:public 。
非静态内部类
java不允许在非静态内部类里定义静态成员
静态内部类
外部类上一级程序单元是包,不可用static修饰,内部类上一级程序单元是外部类,可用static修饰。
静态内部类不能访问外部类的实例成员,只能访问外部类的类成员,静态内部类的实例方法也不能访问外部类的实例成员,只能访问外部类的静态成员。
外部类不能直接访问静态内部类的成员,但可以使用静态内部类的类名作为调用者来访问静态内部类的类成员,也可以使用静态内部类的对象作为调用者来访问静态内部类的实例成员。
使用:
不要在外部类的静态成员中使用非静态内部类,