首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 靜態內部類完整指南:語法、存取規則與實例示範

     編輯:Java 相關知識

什麼是靜態內部類?

靜態內部類是指在外部類內部以 static 修飾宣告的類別。與一般內部類不同,它不依附於外部類的實例,因此:

  • 無法使用 this 參考外部類實例。
  • 只能直接存取外部類的 靜態成員(靜態變數、靜態方法)。
  • 無法存取外部類的實例變數與實例方法。

語法範例

public class OuterClass {
    private double x = 0.0;           // 實例變數
    static private int n = 10;        // 靜態變數

    static void outerMethod() {       // 靜態方法
        System.out.println("from OuterClass...");
    }

    void outerMethod2() {             // 實例方法
        System.out.println("from OuterClass instance method...");
    }

    static class StaticInnerClass {   // 靜態內部類
        static private int m = 5;     // 靜態內部類的靜態變數

        static void innerMethod() {   // 靜態方法
            n = 20;                   // ✅ 可存取外部靜態變數
            int sum = n + m;
            System.out.println("from InnerClass sum = " + sum);
            outerMethod();            // ✅ 可呼叫外部靜態方法
            // x = 1.0;               // ❌ 編譯錯誤:無法存取實例變數
            // outerMethod2();        // ❌ 編譯錯誤:無法呼叫實例方法
        }

        int innerMethod2() {          // 實例方法
            n = 100;                  // ✅ 仍只能存取靜態成員
            outerMethod();
            System.out.println("from InnerMethod2() n = " + n);
            return n;
        }
    }
}

如何使用

1. 呼叫靜態內部類的靜態方法

OuterClass.StaticInnerClass.innerMethod(); // 無需建立任何實例

2. 建立靜態內部類實例並呼叫實例方法

OuterClass.StaticInnerClass inner = new OuterClass.StaticInnerClass();
int result = inner.innerMethod2();

3. 在靜態內部類實例上呼叫靜態方法(合法但不推薦)

inner.innerMethod(); // 編譯器會發出警告,建議用類別名呼叫

何時使用靜態內部類?

當內部類不需要存取外部類的實例狀態時,應優先考慮 static 修飾。這不僅能明確表達設計意圖,也能避免隱含持有外部類實例參考導致的記憶體洩漏風險。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved