成员内部类:
优点:内部类可以访问外部类的所有方法与变量
缺点:不能有静态的方法与成员变量。创建成员内部类前必须先创建外部类。内部类持有外部类的引用,在程序中如果内部类是个长生命周期的对象,外部类是个短生命周期的对象,内部类长期持有外部类的引用,就会造成内存泄漏。
静态内部类:
优点:静态内部类不与外部类强关联,不持有外部类引用。静态内部类的非静态成员可以访问外部类的静态变量
缺点:只能访问外部类静态成员变量和静态方法。
匿名内部类:
与内部类类似但是没有类名,没有class关键字也没有extends和implements等关键字修饰。
局部内部类
定义在一个方法或者一个作用域里面的类,它和成员内部类的区别在于局部内部类的访问仅限于方法内或者该作用域内。