Java类中不仅可以定义方法,还可以定义类,这样定义类在类内部的类就被成为内部类,根据定义方式不同,内部类可分为四种:
静态内部类:
- 静态内部类可以访问外部所有的静态变量和方法,即使是private的也一样
- 静态内部类和一般类一致,可以定义静态变量、方法、构造方法等
- 其他类使用静态内部类,需要如下方式“外部类.静态内部类”,Out.Inner inner = new Out,Inner();
- Java集合类HashMap内部就有一个静态内部类Entry,Entry是HashMap存放的元素的抽象,HashMap内部维护Entry数组用来存放元素,但是Entry对使用者是透明的,像这种和外部类关系密切的,且不依赖外部类实例的,都可以使用静态内部类
成员内部类:
- 定义在类内部的非静态类,就是成员内部类
- 成员内部类不能定义静态方法和变量,因为类初始化的时候,先初始化静态成员,如果允许成员内部类定义静态变量,那么成员内部类的静态变量初始化顺序是有歧义的。
局部内部类:
- 定义在方法中的类就是局部类,如果一个类中只有某个方法中使用,可以考虑局部内部类
匿名内部类:
- 必须要继承一个父类或者接口,当然也仅能只继承一个父类或者实现一个接口。同时它是没有class关键字,匿名内部类是直接使用new来生成一个对象的引用
Java内部类
原文:https://www.cnblogs.com/codingLiu/p/12751462.html