在 Java 中,內(nèi)部類是定義在另一個(gè)類的內(nèi)部的類。它可以訪問其外部類的所有成員(包括私有成員),這使得內(nèi)部類在某些情況下非常有用。以下是使用 Java 內(nèi)部類的基本步驟:
public class OuterClass {
// 外部類的成員變量和方法
}
public class OuterClass {
public class InnerClass {
// 內(nèi)部類的成員變量和方法
}
}
或者,你可以將內(nèi)部類聲明為 static
,這樣它就不需要外部類的實(shí)例即可存在:
public class OuterClass {
public static class InnerClass {
// 內(nèi)部類的成員變量和方法
}
}
要?jiǎng)?chuàng)建內(nèi)部類的實(shí)例,首先需要?jiǎng)?chuàng)建外部類的實(shí)例,然后通過該實(shí)例來創(chuàng)建內(nèi)部類的實(shí)例。例如:
OuterClass outer = new OuterClass();
OuterClass.InnerClass inner = outer.new InnerClass();
或者,對(duì)于靜態(tài)內(nèi)部類,你可以直接使用類名來創(chuàng)建實(shí)例:
OuterClass.InnerClass inner = new OuterClass.InnerClass();
內(nèi)部類可以訪問其外部類的所有成員,包括私有成員。例如:
public class OuterClass {
private int privateVar = 10;
public class InnerClass {
public void accessPrivateVar() {
System.out.println(privateVar); // 可以直接訪問外部類的私有成員
}
}
}
final
(在 Java 8 及以后的版本中,這個(gè)局部變量也可以是隱式 final
,即沒有顯式地使用 final
關(guān)鍵字,但它仍然必須是不可變的)。例如:public class OuterClass {
public void someMethod() {
final int localVar = 20; // 或者在 Java 8 及以后的版本中,可以省略 final 關(guān)鍵字
class InnerClass {
public void accessLocalVar() {
System.out.println(localVar); // 可以訪問外部類的局部變量
}
}
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.accessLocalVar();
}
}
注意:在上面的例子中,localVar
被聲明為 final
,因此它是不可變的。如果你嘗試修改 localVar
的值,編譯器會(huì)報(bào)錯(cuò)。