阅读量:0
在 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
的值,编译器会报错。