在 Java 中,有四种内部类:
- 成员内部类:
- 定义在外部类内部,就像外部类的一个成员变量或成员方法一样。
- 可以访问外部类的所有成员,包括私有成员。
- 示例:
public class OuterClass {
private int outerVariable = 10;
class InnerClass {
public void printOuterVariable() {
System.out.println("Outer variable: " + outerVariable);
}
}
}
- 局部内部类:
- 定义在方法内部。
- 只能在定义它的方法内部被访问。
- 示例:
public class OuterClass {
public void outerMethod() {
class LocalInnerClass {
public void printMessage() {
System.out.println("Inside local inner class");
}
}
LocalInnerClass localInner = new LocalInnerClass();
localInner.printMessage();
}
}
- 匿名内部类:
- 没有名称的内部类,通常在需要创建一个只使用一次的类的情况下使用。
- 可以继承一个类或实现一个接口。
- 示例:
public class OuterClass {
public void performAction() {
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("Inside anonymous inner class");
}
};
new Thread(runnable).start();
}
}
- 静态内部类:
- 使用
static
关键字修饰,类似于外部类的静态成员。 - 不能直接访问外部类的非静态成员,但可以通过外部类的实例来访问。
- 示例:
- 使用
public class OuterClass {
private static int staticOuterVariable = 20;
static class StaticInnerClass {
public void printStaticOuterVariable() {
System.out.println("Static outer variable: " + staticOuterVariable);
}
}
}