内部类(Inner Class)是定义在其他类内部的类。它可以分为两种类型:成员内部类(Member Inner Class)和局部内部类(Local Inner Class)。
1. 成员内部类:成员内部类是定义在另一个类的成员位置上的类。它具有自己的访问控制符,可以是public、protected或默认(package-private),也可以是private。成员内部类可以访问外部类的所有成员(包括私有成员),因为它和外部类属于同一个作用域。
成员内部类有如下特点:
可以访问外部类的所有成员,包括私有成员。
可以有自己的成员变量和成员方法。
可以有自己的构造方法。
2. 局部内部类:局部内部类是定义在方法内部的类,它只能在该方法内部使用。局部内部类不能有访问控制符,因为它没有自己的外部类。
局部内部类有如下特点:
只能在定义它的方法内部使用。
可以访问外部类的所有成员。
生命周期短暂,随着方法的结束而销毁。
内部类的使用场景主要包括:
当一个类需要访问另一个类的私有成员时,可以使用内部类来实现。
当一个类中需要定义与外部类相关的辅助类时,可以使用内部类来组织代码。
当一个类的方法需要创建一个临时类时,可以使用局部内部类来实现。
下面是一个成员内部类的示例:
```java
public class OuterClass {
private int outerData = 10;
public class InnerClass {
public void display() {
System.out.println("Outer data: " + outerData);