天天看點

java中的外部類和内部類

1.概念

外部類:這是一個相對内部類的概念,如果一個類中嵌套了另外一個類,我們就把這個類叫做外部類。

 内部類:顧名思義,就是定義在裡邊的那個類。  見以下代碼:

java中的外部類和内部類

定義了一個類Outer,在Outer内中一定了私有成員變量x ,成員方法show()和一個内部類 Inner  ; Inner類和普通類一樣也有一個成員變量 x 和成員方法 method 

2.通路規則   1. 内部類可以直接通路外部類中的成員    2.外部類通路内部類有兩種方式:      第一種方式: 在主函數中直接用建立内部類對象的方式 , 如  :  Outer out = new Outer();       Outer.Inner in = out.new Inner();    這種方式通常不會用到,不建議使用     第二種方式:   在外部類方法中建立内部類對象; 在主函數中建立外部類對象,直接調用外部類方法 。 見以下代碼 :

java中的外部類和内部類

3.通路内部類中的成員變量。      思考一個問題,上邊的代碼中,列印出來的 x 的值是幾 ?       沒錯,是 6  . 再看看以下的代碼 

java中的外部類和内部類

        定義了一個局部變量, 問 現在列印的x 的值是多少了 ?      答案是 4 。      這說明了什麼 ?       如果 x 前面什麼都沒有,那麼内部類中方法通路的是局部變量 ; 如果沒有局部變量的,就通路 類中的成員變量 x  . 

再來看看以下的代碼 : 繼續思考 列印的x值會是多少     

java中的外部類和内部類

這時候就變成 3 了 , 所如果要通路外部成員變量 要加上 Outer.this   。  注: 當然,就想Inner類中如果沒有局部變量 x ,即使不加也無所謂程式列印的一樣是 6 ,也就是說 如果沒有局部變量x Inner類中也沒有成員變量x ,這個時候即便 x 前邊什麼也不加通路的也是 外部的 x 值3 了  。 見代碼所示 :    

java中的外部類和内部類
java中的外部類和内部類