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

Java 巢狀類別與內部類別完整指南

     編輯:Java 相關知識

定義與分類

定義於另一個類別內部的類別稱為巢狀類別,其作用域受外部類別限制。巢狀類別可存取外部類別所有成員(含 private),但外部類別無法直接存取巢狀類別成員。

巢狀類別分兩大類:

  1. 靜態巢狀類別:帶 static 修飾詞。僅能透過外部類別實例存取非靜態成員,較少使用。
  2. 內部類別:非靜態巢狀類別。可直接存取外部類別所有變數與方法,完全處於外部類別作用域內。

內部類別基礎範例

class Outer {
    int outer_x = 100;
    void test() {
        Inner inner = new Inner();
        inner.display();
    }
    class Inner {
        void display() { System.out.println("outer_x = " + outer_x); }
    }
}
public class InnerClassDemo {
    public static void main(String[] args) {
        new Outer().test(); // 輸出: outer_x = 100
    }
}

Inner 僅在 Outer 作用域可知,外部嘗試實例化將編譯錯誤。

存取權限非對稱性

內部類別可存取外部類別成員,反之不可。內部類別的實例變數(如 int y)對外部類別方法不可見。

區域內部類別與匿名內部類別

內部類別可定義於方法、程式區塊、甚至 for 迴圈內:

void test() {
    for (int i=0; i<10; i++) {
        class Inner { void display() { System.out.println(outer_x); } }
        new Inner().display();
    }
}

此類別僅在該區塊內可見。匿名內部類別(無名稱)常用於事件處理、執行緒建立等場合,簡化程式碼。

歷史背景

巢狀類別於 Java 1.1 引入,1.0 版本不支援。

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