https://www.cnblogs.com/hasse/p/5020519.html
辅看这个:
https://www.cnblogs.com/nzhbk/p/6489005.html
四种内部类:
成员内部类、局部内部类(在类中的一个方法里定义了一个类)、静态嵌套类、匿名内部类 。
匿名内部类:
匿名内部类共有两种:
1.继承式的匿名内部类(Handler是一个类)
private Handler mHandler =new Handler(){
@override
public void handlerMessage(Message msg){ ...};
};
2.接口式的匿名内部类(OnClickListener是一个接口)
private OnClickListener clickListener =new OnClickListener(){
@override
public void onClick(){...};
}
(非静态)内部类和静态内部类之间的差别:
静态的只能访问静态的,外部类的静态方法也只能访问静态的内部类或者静态内部方法;
非静态的可以访问静和非静;
内部类可以访问外部类的成员变量包括私有的,原因是内部类持有外部类的引用(通过反编译字节码可知);
外部类可以访问内部类的成员变量包括私有的(单例模式中会用到的),原因是内部类相当于外部类的一个成员变量,所以引用的时候就相当于引用自己类的私有变量一样,只是引用的时候要创建一个内部类的实例来进行引用;
变量分为成员变量(全局变量)和局部变量(只在方法中声明的变量);