小白的學習筆記之內部類(一)

2021-10-01 17:19:00 字數 1403 閱讀 7891

內部類

一、內部類訪問外部類的成員

類的組成:方法,構造器,成員變數,初始化塊(**塊),內部類(也看成是類中一員)

1、外部類能夠訪問內部類的私有成員變數

2、內部類也可以訪問外部類的私有方法、私有成員變數

變數訪問的順序

1、區域性變數優先,本類中的成員變數,外部類的成員變數;

2、內部類中的方法要訪問內部類的成員變數,用 this.+成員變數名 來訪問;

3、內部類中的方法要訪問外問類的成員變數,用 外部類的類名.+this.+

成員變數名 來訪問;

4、外部類不能直接訪問內部類成員變數名,除非外部類new乙個內部類物件去訪問內部類的成員變數。

為什麼內部類可以直接使用外部類的成員變數(前提是內部類中沒有同名成員變數)?

1、成員變數是跟著物件走的,有物件才有成員變數;

2、能呼叫內部類的普通方法,一定有乙個有內部類物件存在;

3、如果有乙個內部類物件存在,則一定有個外部類物件存在;

以上這些適用於普通內部類和區域性內部類,不適和於靜態內部類。

綜上所述,可以表明,有乙個內部類物件存在,則一定會有乙個外部類物件存在,所以,在內部類普通方法中,能夠直接訪問外部類的成員變數。(內部類物件隱式地儲存了指向建立他的外部類物件的箭頭/引用/指標)

但相反,有外部類物件存在,不代表有內部類物件存在,所以外部類不能直接使用內部類的成員變數。

靜態規則:

1、不允許在外部類的靜態方法中使用內部類;

2、內部類不要沾染上和「靜態static」關鍵字有關的內容,否則就會報錯。

二、內部類的種類

1、普通內部類:類中定義的另乙個類。外部類訪問普通內部類看起來和訪問乙個普通類區別並不太大。

2、區域性內部類:外部方法中定義乙個內部類。作用域侷限在定義他的方法中,無法在外部類的其他方法中使用。感覺用處相對比較小。在任何乙個作用域內都可以嵌入乙個區域性內部類。例如在if語句啥的內部可以嵌入內部類。

3、靜態內部類:用static修飾的內部類就是靜態內部類。

靜態,跟著類走的,跟物件沒有關係; 一旦定義了乙個靜態內部類,那麼該類就屬於外部類的組成部份了(跟外部類物件沒有什麼關係)

基本上,什麼成員都可以往靜態內部類裡面放。

靜態內部類和外部類之間訪問資料的時候,把握一些原則:

1、內部類的靜態方法中不要去訪問那些非靜態的成員變數。

2、靜態內部類中的普通方法也不要去訪問外部類的普通方法,只能訪問外部類的靜態方法。

靜態內部類和外部類之間的一些呼叫關係:

1、外部類借助靜態內部類的類名;

2、外部類借助靜態內部類對像;

三、介面的內部類

在介面中,是可以在乙個內部類中定義乙個靜態成員變數,為什麼?

因為在介面中,會自動為內部類使用static修飾,也就是說,介面**現的內部類,都會是靜態內部類。

Java學習筆記之內部類

類的第五個成員 內部類 innerclass 相當於說,我們可以在類的內部再定義類。外面的類,外部類。裡面定義的類 內部類。內部類的分類 成員內部類 宣告在類內部且方法外面 vs 區域性內部類 宣告在類的方法裡 成員內部類 區域性內部類 關於內部類需要掌握的知識 如何建立內部類物件 如何區分呼叫外部...

java學習筆記之內部類

內部類的作用 內部類提供了更好的封裝,只能讓外部類直接訪問,不允許同乙個包中的其他類直接訪問。內部類可以直接訪問外部類的私有屬性,內部類被當成其外部類的成員,但外部類不能訪問內部類的內部屬性。內部類的使用場合 由於內部類提供了封號的封裝特性,並且可以很方便的訪問外部類的屬性。所以,通常內部類在只為所...

java學習筆記之內部類

內部類 乙個類定義在乙個類的內部 a類要直接訪問b類中的成員時,可以將a類定義到b類中,作為b類的內部類存在 訪問規則 內部類可以直接訪問外部類中的成員 外部類要訪問內部類只能建立內部類的物件 內部類有所屬,生成的class檔名稱為outer inner 內部類相當於外部類中的乙個成員,那麼就可以被...