1.实现类:
正常标准的类。
2.静态内部类:
对比:
(1)更好的封装性
(2)内部类成员可以直接访问外部类的私有数据,因为内部类被当成其外部类成员,但外部类不能访问内部类的实现细节,例如内部类的成员变量
(3)匿名内部类适合用于创建那些仅需要一次使用的类
3.局部内部类:
(1)局部内部类中不能定义 static 成员。
(2)局部内部类中还可以包含内部类,但是这些内部类也不能使用访问控制修饰符(public、private 和 protected)和 static 修饰符修饰。
(3)在局部内部类中可以访问外部类的所有成员。
(4)在局部内部类中只可以访问当前方法中 final 类型的参数与变量。如果方法中的成员与外部类中的成员同名,则可以使用 .this. 的形式访问外部类中的成员。
4.匿名内部类:
匿名内部类可以使你的代码更加简洁,你可以在定义一个类的同时对其进行实例化。它与局部类很相似,不同的是它没有类名,如果某个局部类你只需要用一次,那么你就可以使用匿名内部类。