特点
- 静态内部类是指被声明为static的内部类,不能访问外部类的普通成员变量,只能访问外部类中的静态成员变量和静态方法。
- 去掉关键字static就是成员内部类,可以自由的引用外部类的属性和方法。
- 局部内部类是指定义在一个代码块内的类,作用范围为其所在的代码块。局部类类似于局部变量一样,不能被public、protected、private以及static修饰,只能访问方法中定义为final类型的局部变量。
- 匿名内部类,是一种没有类名的内部类,不使用关键字class、extends、implements,它必须继承其他类或实现其它接口。
- 匿名内部类不能有构造函数
- 不能定义静态成员、方法和类
- 不能是public、protected、private、static。
- 只能创建匿名内部类的一个实例 - 内部类可以直接访问外部类中的成员。
- 外部类要访问内部类,必须建立内部类的对象。
应用场景
- 场景一:当某个类除了它的外部类,不再被其他的类使用时
- 场景二:解决一些非面向对象的语句块
- 场景三:一些多算法场合
- 场景四:适当使用内部类,使得代码更加灵活和富有扩展性