内部类:将一个类的定义放在另一个类的定义内部成员内部类:
1. 成员内部类不能存在任何 static的变量和方法;
2. 成员内部类依附于外围类,所以只能先创建了外围类才能够创建内部类
局部内部类:定义在类方法中
1. 局部内部类不能被public 、private 、static修饰:
2. 在外部类中不能创建内部类的实例;
3. 内部类访问包含他的方法中的变量必须有fianl修饰;
4. 内部类和外部类有同名变量和方法时,需要通过Outer.this方式访问外部类成员变量或方法。
匿名内部类:
1. 匿名内部类是没有访问修饰符的;
2. new 匿名内部类,这个类首先要存在;
3. 匿名内部类是没有构造方法的。因为他连名字都没有。
静态内部类:静态内部类和非静态内部类之间存在一个最大区别,非静态内部类在编译完成之后会隐含保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有,这也意味着:
1. 他的创建不依赖外围类;
2. 他不能使用任何外围类的非static成员变量和方法。
静态内部类注意事项:
1. 静态内部类才可以声明静态方法
2. 静态方法不可以使用非静态变量