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