把類定義在其他類的內部, 這個類就被稱為內部類。
舉例: 在類 a 中定義了乙個類 b, 類 b 就是內部類。
內部類的訪問特點:
內部類可以直接訪問外部類的成員, 包括私有。
外部類要訪問內部類的成員, 必須建立物件。
按照內部類在類中定義的位置不同, 可以分為如下兩種格式:
成員位置(成員內部類)
一般內部類就是不讓外界直接訪問的。
成員內部的常見修飾符:private 、static
private 為了保證資料的安全性
static 為了讓資料訪問更方便(ps:被靜態修飾的成員內部類只能訪問外部類的靜態成員)
區域性位置(區域性內部類)class outer
public
static
void
show2()
}} class innerclassdemo4
}
可以直接訪問外部類的成員
可以建立內部類物件, 通過物件呼叫內部類方法, 來使用區域性內部類功能
區域性內部類訪問區域性變數的注意事項:
必須被 final 修飾。
因為區域性變數會隨著方法的呼叫完畢而消失, 這個時候, 區域性物件並沒有立馬從堆記憶體中消失, 還要使用那個變數。 為了讓資料還能繼續被使用, 就用 fianl 修飾, 這樣, 在堆記憶體裡面儲存的其實是乙個常量值。 通過反編譯工具可以看一下。
上述例子能看出來區域性內部類的執行範圍只能在它其中的方法中。class outer
} inner i = new inner();
i.show();
}} class innerclassdemo5
}
匿名內部類
就是內部類的簡化寫法。
前提:1. 存在乙個類或者介面2.這裡的類可以是具體類也可以是抽象類。
格式:new 類名或者介面名()
本質:是乙個繼承了類或者實現了介面的子類匿名物件
inte***ce inter
class outer
public
void
show2()
};i.show();
i.show2();
}}
內部類和匿名內部類
內部類 取個類名inner 有三種 成員內部類 相當於類中的成員 1.可以訪問外部類的成員變數.2.類中的成員函式訪問內部類 建立內部類的物件進行訪問.如 inner in new inner 3.外部其他類 不是內部類的直接外部類 訪問內部類的成員建立物件.格式 外部類名 內部類名 變數名 new...
內部類和匿名內部類
內部類訪問特點 1,內部類可以直接訪問外部類中的成員。2,外部類要訪問內部類,必須建立內部類的物件 用於類的設計 分析事物時,發現該事物描述中還有事物,而且這個事物還在訪問被描述事物的內容,這時就是還有的事物定義成內部類來描述。class outer static void function 如果內...
內部類和匿名內部類
1.定義在乙個類裡邊函式之外的內部類,成員變數的書寫位置是相同的 2.巢狀內部類的類 被稱作外部類 3.為什麼要使用內部類,此類只在當前 類中 檔案中 使用 4.一般成員內部類建立物件,只在它所屬的外部類中建立 for example public class snippet class mothe...