在类中定义的类称为类部类
内部类的使用场景:
1 内部类只能让当前的外部类访问
四种内部类
1 非静态内部类,内部类没有使用static修饰
2 静态内部类,内部类使用static修饰
3 局部内部类,在方法中定义的类部类
4 匿名内部类,适合于仅使用一次的类
编译后 内部类的字节码 :外部类$内部类名。class
匿名内部类是一种特殊的内部类,没有名字,只能使用一次,在处理事件机制的时候使用匿名内部类
在java8之前,匿名内部类,只能返回用final修饰的局部变量
如果方法中的局部变量不使用final修饰,存在于方法的内存空间中,方法调用结束后,方法的空间就会被销毁,局部变量也会被销毁,但是匿名内部类的生命周期不会随着方法的结束而结束,有jvm来控制,此时对象使用的局部变量也就不存在了,使用final修饰的局部变量表示常量,存放于常量池中,不在方法中,对象被销毁了,依然可以使用