靜態(tài)內(nèi)部類(lèi)是Java中的一種內(nèi)部類(lèi),它是定義在另一個(gè)類(lèi)中的類(lèi),但它是靜態(tài)的,不依賴于外部類(lèi)的實(shí)例。靜態(tài)內(nèi)部類(lèi)可以看作是外部類(lèi)的一個(gè)靜態(tài)成員,可以訪問(wèn)外部類(lèi)的靜態(tài)變量和靜態(tài)方法,但不能訪問(wèn)外部類(lèi)的非靜態(tài)成員。
靜態(tài)內(nèi)部類(lèi)通常用于封裝一些獨(dú)立的、與外部類(lèi)無(wú)關(guān)的功能,并且這些功能不需要訪問(wèn)外部類(lèi)的實(shí)例變量。它的優(yōu)點(diǎn)是可以提高代碼的封裝性、可讀性和可維護(hù)性。
下面是定義靜態(tài)內(nèi)部類(lèi)的示例代碼:
public class OuterClass {
private static int outerStaticVar = 1;
private int outerInstanceVar = 2;
// 靜態(tài)內(nèi)部類(lèi)
public static class StaticInnerClass {
private static int innerStaticVar = 3;
public void doSomething() {
System.out.println("StaticInnerClass doSomething()");
System.out.println("outerStaticVar: " + outerStaticVar);
// System.out.println("outerInstanceVar: " + outerInstanceVar); // 編譯錯(cuò)誤
System.out.println("innerStaticVar: " + innerStaticVar);
}
}
}
在上述代碼中,我們定義了一個(gè)名為StaticInnerClass的靜態(tài)內(nèi)部類(lèi),它包含一個(gè)doSomething方法,輸出一些信息,并訪問(wèn)了外部類(lèi)OuterClass的靜態(tài)變量outerStaticVar和靜態(tài)內(nèi)部類(lèi)自己的靜態(tài)變量innerStaticVar。需要注意的是,靜態(tài)內(nèi)部類(lèi)不能直接訪問(wèn)外部類(lèi)的實(shí)例變量outerInstanceVar,因?yàn)閷?shí)例變量必須要依賴于外部類(lèi)的實(shí)例才能存在。
定義靜態(tài)內(nèi)部類(lèi)的語(yǔ)法格式為:
class OuterClass {
static class StaticInnerClass {
// 靜態(tài)內(nèi)部類(lèi)的成員
}
}
其中,static關(guān)鍵字表示該內(nèi)部類(lèi)是靜態(tài)的。在外部類(lèi)中訪問(wèn)靜態(tài)內(nèi)部類(lèi)的成員時(shí),可以直接使用內(nèi)部類(lèi)的類(lèi)名來(lái)訪問(wèn),例如OuterClass.StaticInnerClass。