内部类
在Java中,允许在一个类的内部定义类,这样的类称为内部类,内部类所在的类称为外部类。在实际开发中,根据内部类的位置、修饰符和定义方式的不同,内部类可分为成员内部类、局部内部类、静态内部类、匿名内部类四种。
成员内部类
在一个类中,除了可以定义成员变量、成员方法外,还可以定义类,这样的类称为成员内部类。成员内部类可以访问外部类的所有成员。
成员内部类的使用方法:
1、 Inner 类定义在 Outer 类的内部,相当于 Outer 类的一个成员变量的位置,Inner 类可以使用任意访问控制符,如 public 、 protected 、 private 等
2、 Inner 类中定义的 test() 方法可以直接访问 Outer 类中的数据,而不受访问控制符的影响,如直接访问 Outer 类中的私有属性
3、 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
4、 编译上面的程序后,会发现产生了两个 .class 文件
局部内部类
局部内部类,也称为方法内部类,是指定义在某个局部范围内的类,它与局部变量一样,都是在方法中定义的,有效范围只限于方法内部。
在局部内部类中,局部内部类可以访问外部类的所有成员变量和方法,而局部内部类中变量和方法只能在所属方法中访问。
由于方法内部类不能在外部类的方法以外的地方使用,因此方法内部类不能使用访问控制符和 static 修饰符。