在 Java 中,内部类是定义在另一个类的内部的类。它可以访问其外部类的所有成员(包括私有成员),这使得内部类在某些情况下非常有用。以下是使用 Java 内部类的基本步骤:
public class OuterClass {
// 外部类的成员变量和方法
}
public class OuterClass {
public class InnerClass {
// 内部类的成员变量和方法
}
}
或者,你可以将内部类声明为 static
,这样它就不需要外部类的实例即可存在:
public class OuterClass {
public static class InnerClass {
// 内部类的成员变量和方法
}
}
要创建内部类的实例,首先需要创建外部类的实例,然后通过该实例来创建内部类的实例。例如:
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
或者,对于静态内部类,你可以直接使用类名来创建实例:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
内部类可以访问其外部类的所有成员,包括私有成员。例如:
public class OuterClass {
private int privateVar = 10;
public class InnerClass {
public void accessPrivateVar() {
System.out.println(privateVar); // 可以直接访问外部类的私有成员
}
}
}
final
(在 Java 8 及以后的版本中,这个局部变量也可以是隐式 final
,即没有显式地使用 final
关键字,但它仍然必须是不可变的)。例如:public class OuterClass {
public void someMethod() {
final int localVar = 20; // 或者在 Java 8 及以后的版本中,可以省略 final 关键字
class InnerClass {
public void accessLocalVar() {
System.out.println(localVar); // 可以访问外部类的局部变量
}
}
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.accessLocalVar();
}
}
注意:在上面的例子中,localVar
被声明为 final
,因此它是不可变的。如果你尝试修改 localVar
的值,编译器会报错。