四大內部類簡單小結

2021-07-11 13:42:13 字數 1284 閱讀 9635

1.

例項內部類(類的內部,方法外部,沒有

static

修飾)例項內部類也叫成員內部類,是最普通的內部類:

1)例項內部類物件依託於外部類物件。

2)物件構建方式:先構建外部類物件,再構建內部類物件

3)可以訪問外部類所有成員(靜態,非靜態),即使是private的

例如:classouter

} outer.innero1 = new outer().new inner();

注意:1)雖然成員內部類可以無條件地訪問外部類的成員,而外部類想訪問成員內部類的成員卻不是這麼隨心所欲了。在外部類中如果要訪問成員內部類的成員,必須先建立乙個成員內部類的物件,再通過指向這個物件的引用來訪問。 2)

內部類可以擁有 private訪問許可權、protected訪問許可權、public訪問許可權及包訪問許可權 。如果成員內部類inner用private修飾,則只能在外部類的內部訪問,如果用public修飾,則任何地方都能訪問; 如果用protected修飾,則只能在同乙個包下或者繼承外部類的情況下訪問;如果是預設訪問許可權,則只能在同乙個包下訪問。

2. 靜態內部類

(類的內部,方法外部,有

static修飾)

1)靜態內部類不依賴於外部類物件。

2)物件構建方式:允許直接內部類物件

3)靜態內部類只能訪問外部類所有靜態成員

例如:classouter

} outer.innero1 = new outer.inner();

3. 區域性內部類(定義在方法內部)

1)區域性內部類的物件只能在定義此類的方法內部構建

2)區域性內部類可以訪問類中所有成員,但只能訪問本方法內部使用

final

修飾的常量

例如:public class outterclass3

}}}

注意:區域性內部類不能使用

static

修飾4. 匿名內部類

匿名內部類是我們編寫**時,最常用的一種內部類,在編寫事件監聽的**時使用匿名內部類不但方便,而且使**更加容易維護。

1)匿名內部類會有乙個父類(可能是具體類,抽象類,介面)

2)匿名內部類沒有名字,但有類體(**塊)

3)匿名內部類假如寫到了方法內部,它就是特殊的區域性內部類

classa}

inte***ceim

classouter };

publicvoid display()

;}; }

}注意:

1)匿名內部類不能有訪問修飾符和static修飾符的 。

四大內部類

1.例項內部類 public class shilitest 因為main方法是乙個靜態方法,而內部類不是靜態內部類,所以需要依託外部類物件 構建 訪問 param args public static void main string args 2.靜態內部類 public class stati...

物件導向 四大內部類

class a a a new a a.linner inner a.new linner class a a.linner inner new a.linner 類裡面有乙個方法 class a class a inner inner new inner class a 在哪定義在哪用 inner...

C C 的四大記憶體分割槽

正確的理解c c 程式的記憶體分割槽,是合格程式猿的基本要求。網路上流形兩大版本記憶體分割槽,分別為 1.五大記憶體分割槽 堆 棧 全域性 靜態儲存區 自由儲存區和常量儲存區。2.五大記憶體分割槽 堆 棧 全域性 靜態儲存區 字串常量區和 區。且不論以上兩種分割槽孰是孰非,孰優孰劣,我認為具體的記憶...