來由:我們希望定義乙個類可以訪問另乙個類裡面的私有成員。
一、內部類(第一種形式):定義在乙個類內部的類。
1)內部類擁有訪問外部類所有成員的許可權(包括私有成員)。
2)外部類可不可以直接訪問內部類的成員?(需要通過內部類的物件來訪問)
3)內部類可以看成是乙個成員類,所以成員變數和成員方法所具有的屬性,內部類同樣具有。
4)定義在類的內部的類,編譯後會不會生成.class檔案?
5)在內部類中,如何訪問內部類自身物件和外部類的物件?
6)內部類同樣可以用static來修飾。
非靜態的內部類:屬於外部類的物件的成員。
靜態的內部類:靜態內部類是在建立外部類的時候初始化
靜態內部類只能訪問靜態的外部類成員。
靜態的方法只能訪問靜態的成員,靜態的內部類也是如此。
//其他類如何呼叫內部類中的方法?
shop.girl sg = new shop().new girl();
sg.eat();
問:如何去訪問乙個類中的私有成員?
1. 內部類
2. 封裝
3. 反射
二、內部類(第二種形式):
定義在方法內部的類也是內部類。
如何建立內部類的物件?能和第一種形式一樣嗎?
1)定義在方法內的內部類,編譯後生成的.class檔案又是什麼形式的?
2)方法呼叫完畢,內部類的類物件是否還存在?
jdk1.8版本 定義在方法內部的內部類可以直接訪問外部類的變數(成員變數、區域性變數)
3)定義在方法內部的內部類訪問外部類的非成員變數時,要用final修飾。why?
例項變數、物件、陣列駐留在堆上
區域性變數、成員方法駐留在棧上,它只存在於方法的生命期內,呼叫方法結束,棧結構就被刪除,所以無法保證區域性變數的存活期和堆中的物件一樣長。
4)能夠應用於方法內部類的修飾符有哪些?abstract和final。
5)在靜態方法內宣告的內部類只能訪問外部類的靜態成員。
第一種形式的內部類和第二種形式的內部類有哪些細微的區別:
三、匿名類:匿名內部類,乙個沒有指定名字的內部類。
匿名類能否產生.class檔案?又是怎樣表示的?
語法: new 父類名()
注:父類必須是乙個已知類(介面、抽象類、普通類)。
若父類是介面,那麼這個匿名類就實現了這個介面。
若父類是抽象類或普通類,那麼這個匿名類就繼承了這個抽象類或普通類。
匿名內部類永遠是作為一條語句的一部分建立,因此,不要忘記在該類定義之後使用大括號關閉該語句。
匿名內部類不能擴充套件乙個類,或實現乙個(多個)介面。
使用內部類的目的:
C語言入門 第八周 作業01
題目內容 你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以 結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如 it s 算乙個單詞,長度為4。注意,行中可能出現連續的空格。輸入格式 輸入在一行中給出一行文字,以 結束,結尾的句號不能計算在最後乙個單詞的長度內...
Vue learning 入門 第一彈
個人部落格 src script div newvue script 條件判斷式,根據表示式的真偽進行頁面處理 v if seen 2017最新發賣div 處理陣列迴圈,將資料迴圈顯示到頁面時 遊戲列表h3 v if seen 2017最新發賣div v for game in games 元li ...
MOOC C語言入門 第八周作業 單詞長度
題目內容 你的程式要讀入一行文字,其中以空格分隔為若干個單詞,以 結束。你要輸出這行文字中每個單詞的長度。這裡的單詞與語言無關,可以包括各種符號,比如 it s 算乙個單詞,長度為4。注意,行中可能出現連續的空格。輸入格式 輸入在一行中給出一行文字,以 結束,結尾的句號不能計算在最後乙個單詞的長度內...