在 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
的值,編譯器會報錯。