1、静态内部类
定义在一个类里,并在定义时加上static关键字,被编译成一个完全独立的.class文件,名称为OuterClass$InnerClass.class的形式,只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法。
定义方式:OutClass.InnerClass inner = new OutClass.InnerClass()
2、成员内部类
也是定义在一个类里,它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。
定义方式:OutClass.InnerClass inner = new OutClass().new InnerClass()
3、局部内部类
局部内部类定义在方法中,比方法的范围还小;像局部变量一样,不能被public, protected, private和static修饰。只能访问方法中定义的final类型的局部变量,但是可以访问外部类的所有成员变量。
定义方法:直接通过调用外部类对象的方法来使用局部内部类。