1. 程式人生 > >JAVA-初步認識-第十章-內部類-局部內部類

JAVA-初步認識-第十章-內部類-局部內部類

png 方法 image cnblogs -s 只有一個 外部類 理解 輸出

一.

繼續將之前的例子深化一下。現在要講述的是內部類除了放置在成員上,還能放置在局部上。換句話說,就是哪都能放。

這裏局部位置是指哪兒?

技術分享

技術分享

繼續將程序補全,截圖如下:

技術分享

上面的截圖其實交代了內部類在局部位置上的知識點,這裏面有一定的規則。

截圖中有兩個位置創建內部類的對象,有一個沒寫完,只寫了In,但是也交代了創建對象的位置。沒寫完的那個位置,書寫內部類對象是沒有問題的,訪問內部類是沒有問題的,因為它們處在同一層次上,可以"看到"內部類。但是func()和method()處在同一層次上,func()無法看到method()方法裏的內部類。→這是我自己的理解。

技術分享

程序越來越復雜,在Outer類的成員方法中定義了內部類(局部位置,我想起來局部位置是什麽?是指位於函數的方法體內

),而且在局部位置定義完內部類之後,立即就在相同層次的位置定義了內部類的對象。

接著編譯運行該程序。

(我先說明一下我的理解,程序就是外部類調用自己的method()方法,而這個方法中有兩次輸出。錯誤,我一開始以為是有兩次輸出,一個是內部類中的輸出,一個是in.show()的輸出。但是內部類裏的輸出應該是不存在的,沒有創建對象,怎麽可能對類中的成員進行運算。因此,只有一個輸出,結果無法輸出,因為in對象裏面沒有num屬性。)

技術分享

編譯的結果存在,且輸出的是外部類的num,說明什麽?系統自動的省略了外部類的調用,輸出語句中是Outer.this.num而不僅僅是num。這種表述情況不多(這之前是不是講解過,內部類可以直接訪問外部類中的成員

?),另外一種比較多。

接著對程序進行修改,訪問的是局部位置中的局部變量。

技術分享

技術分享

最終類型就是final修飾的,

技術分享

技術分享

這裏又開始對不同位置間的調用產生了疑惑,為什麽這裏可以對x進行訪問。

不都是在局部位置中麽,為什麽它還要加上final呢?不加final還完成不了。

舉個例子來說明一下,

技術分享

返回完object後,可以用一個方法接收(?),舉個例子來說明,

技術分享

這個方法一調用,就返回一個object,要用變量來接收。

技術分享

如果改成y,也不行,因為y是變化的,加上final就沒事了。

技術分享

這裏講解的知識點就是內部類定義在局部方法中,這種情況不多,另一種情況較多。

對局部的訪問不是特別多,只要一加fianl就可以了。

JAVA-初步認識-第十章-內部類-局部內部類