1.概念
外部類:這是一個相對内部類的概念,如果一個類中嵌套了另外一個類,我們就把這個類叫做外部類。
内部類:顧名思義,就是定義在裡邊的那個類。 見以下代碼:
定義了一個類Outer,在Outer内中一定了私有成員變量x ,成員方法show()和一個内部類 Inner ; Inner類和普通類一樣也有一個成員變量 x 和成員方法 method
2.通路規則 1. 内部類可以直接通路外部類中的成員 2.外部類通路内部類有兩種方式: 第一種方式: 在主函數中直接用建立内部類對象的方式 , 如 : Outer out = new Outer(); Outer.Inner in = out.new Inner(); 這種方式通常不會用到,不建議使用 第二種方式: 在外部類方法中建立内部類對象; 在主函數中建立外部類對象,直接調用外部類方法 。 見以下代碼 :
3.通路内部類中的成員變量。 思考一個問題,上邊的代碼中,列印出來的 x 的值是幾 ? 沒錯,是 6 . 再看看以下的代碼
定義了一個局部變量, 問 現在列印的x 的值是多少了 ? 答案是 4 。 這說明了什麼 ? 如果 x 前面什麼都沒有,那麼内部類中方法通路的是局部變量 ; 如果沒有局部變量的,就通路 類中的成員變量 x .
再來看看以下的代碼 : 繼續思考 列印的x值會是多少
這時候就變成 3 了 , 所如果要通路外部成員變量 要加上 Outer.this 。 注: 當然,就想Inner類中如果沒有局部變量 x ,即使不加也無所謂程式列印的一樣是 6 ,也就是說 如果沒有局部變量x Inner類中也沒有成員變量x ,這個時候即便 x 前邊什麼也不加通路的也是 外部的 x 值3 了 。 見代碼所示 :