内部类可以分为以下四种:
一、成员内部类:
二、局部内部类:
与局部变量类似,在方法中声明,不能用访问权限修饰符修饰,同时遵循代码的先后顺序。需要注意的是,局部内部类不能直接访问局部变量,和方法的参数。
因为局部变量和方法参数的生命周期非常短,而局部内部类的对象的生命周期则不一定。局部内部类的对象创建出来后,持有该变量,且该对象不一定随局部变量的销毁而销毁。这就需要这个对象持有的变量拥有较长的生命周期。
如果需要访问局部变量或方法的参数,可以将局部变量或方法参数用final修饰,延长其生命周期。而如果遇到需要改动局部变量或方法参数的值的情况,用final修饰显然不合适。此时可以将其提升为全局变量,延长其声明周期。
使用static修饰的内部类。static一般只用来修饰类的属性和方法,这些都属于成员,所以可以称静态内部类为静态成员内部类。静态内部类可以在任何位置创建,但静态内部类不能直接访问非static的成员。因为static修饰的成员会优先放入内存。
四、匿名内部类:
这四种内部类,除静态内部类没有明显的区分,在符合语法规则的前提下可以任意使用。使用局部内部类或匿名内部类可能导致代码中的括号较多,所以在代码量较大时,可以优先考虑使用成员内部类。