靜態內部類是Java中的一種內部類,它是定義在另一個類中的類,但它是靜態的,不依賴于外部類的實例。靜態內部類可以看作是外部類的一個靜態成員,可以訪問外部類的靜態變量和靜態方法,但不能訪問外部類的非靜態成員。
靜態內部類通常用于封裝一些獨立的、與外部類無關的功能,并且這些功能不需要訪問外部類的實例變量。它的優點是可以提高代碼的封裝性、可讀性和可維護性。
下面是定義靜態內部類的示例代碼:
public class OuterClass {
private static int outerStaticVar = 1;
private int outerInstanceVar = 2;
// 靜態內部類
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); // 編譯錯誤
System.out.println("innerStaticVar: " + innerStaticVar);
}
}
}
在上述代碼中,我們定義了一個名為StaticInnerClass的靜態內部類,它包含一個doSomething方法,輸出一些信息,并訪問了外部類OuterClass的靜態變量outerStaticVar和靜態內部類自己的靜態變量innerStaticVar。需要注意的是,靜態內部類不能直接訪問外部類的實例變量outerInstanceVar,因為實例變量必須要依賴于外部類的實例才能存在。
定義靜態內部類的語法格式為:
class OuterClass {
static class StaticInnerClass {
// 靜態內部類的成員
}
}
其中,static關鍵字表示該內部類是靜態的。在外部類中訪問靜態內部類的成員時,可以直接使用內部類的類名來訪問,例如OuterClass.StaticInnerClass。