1 内部类:
内部类是建立在外部类里面的,可以调用外部类的方法,但是外部类到不可以调用内部类的private属性,方法等。内部类持有外部内的原因可以理解为初始化一个内部类的前提是先初始化一个外部类
内部类 内部类名 = new 外部类. new 内部类
内部类的使用一般是因外这个类的使用限于在外部类上使用,其他地方也不需要使用
2 静态内部类
静态内部类并不是一开始就创建的!它与静态成员不一样,并不能直接通过外部类名.内部类名的方式就可以直接访问并得到它的对象,通俗一点来说就是:静态内部类跟正常的一个外部类一样,它需要创建才能有
静态态内部类并不会依赖于任何一个外部类实例,它可以在适当的时候被系统回收!所以,静态内部类对象的生命跟普通的对象一样,生命开始于开发者创建它,结束于系统回收它!(注:如果在传递的过程中存在静态引用,依然有可能造成内存泄漏,比如初始化时传递的方法里面包含了context,activity等,这个时候就会有导致activity无法释放,这个时候可以使用Application或者弱引用的方式)
外部类.静态内部类 静态内部类名 = new 外部类.静态内部类()
3 匿名类
定义这个类的同时定义了这个类的实例,平时Android开发中handler,runnable, Timertask之类的进程会用到,一般只初始化一次,也称为匿名内部类,持有外部类的强引用,所以经常使用不当容易造成内存泄漏。处理的方式一般也是使用弱引用,将匿名内部类修改成static方式。