天天看點

黑馬程式員-----内部類

黑馬程式員-----内部類
黑馬程式員-----内部類

内部類編譯後,産生所屬位元組碼檔案!

黑馬程式員-----内部類

内部類通路特點:

1,内部類可以直接通路外部類中的成員。

2,外部類要通路内部類,必須建立内部類的對象。(這個知道怎麼調用就OK)

一般用于類的設計。

分析事物時,發現該事物描述中還有事物,而且這個事物還在通路被描述事物的内容。(其實就是一個類中,還另有特性需要描述)

這時就是還有的事物定義成内部類來描述。

黑馬程式員-----内部類

内部類直接通路格式(一般不多見,因為内部類通常都會被封裝(私有)起來!)

黑馬程式員-----内部類

内部類靜态後通路方法(此時裡面show()方法是非靜态的!)

黑馬程式員-----内部類

此處編譯錯誤原因:内部類show()通路的成員變量不是靜态的!

黑馬程式員-----内部類

内部類中定義一個靜态的static void function() ,來調用試試!

黑馬程式員-----内部類

運作沒有問題!

——————————視訊暫停中,感覺畢老師要來經典了!!!^ _ ^!~

黑馬程式員-----内部類

失望了!原來畢老師把内部類又改成了非靜态的了,這個我都可以想到!一個非靜态的類裡面存在一個靜态函數,那肯定不行!

為什麼呢?因為呀!靜态的函數會随着類的加載而加載,需要類先加載好,有出空間放靜态的函數。(自己的了解!)

簡單的說:如果内部類中定義了靜态成員,該内部類也必須是靜态的。

黑馬程式員-----内部類

記住調用的方法!開發不常見!面試就能見到!

new Innwe().show();第一眼看到還蠻新鮮,仔細一看,不就是對象調用方法嘛。。。。。

黑馬程式員-----内部類

局部内部類!

黑馬程式員-----内部類

别再函數的外面new Inner();,外面的方法看不到裡面的 Inner類。

黑馬程式員-----内部類

變量不就在局部裡面嗎?為什麼要加final呢?

固定規則!但可以說說為什麼!,畢老師舉了個上帝類引用指向内部類,然後調用的時候說明了局部變量生命周期短的原因造成的。

還存在問題:final就是後的變量就變成了常量!常量的生命周期就長了?