內部類分為:成員內部類(靜態和非靜態)、匿名內部類、局部內部類 1.成員內部類(可以使用private、default、protected、public任意修飾) 非靜態內部類 1.非靜態內部類必須寄存在一個外部類對象里。因此,如果有一個非靜態內部類對象那麼一定存在對應的外部類對象 2.非靜態內部類 ...
內部類分為:成員內部類(靜態和非靜態)、匿名內部類、局部內部類
1.成員內部類(可以使用private、default、protected、public任意修飾)
非靜態內部類
1.非靜態內部類必須寄存在一個外部類對象里。因此,如果有一個非靜態內部類對象那麼一定存在對應的外部類對象
2.非靜態內部類可以直接訪問外部類的成員,但是外部類不能直接訪問非靜態內部類成員
3.非靜態內部類不能有靜態方法、靜態屬性和靜態初始化塊。
4.外部類的靜態方法、靜態代碼塊不能訪問非靜態內部類,包括不能使用非靜態內部類定義變數、創建實例
5.成員變數訪問:
內部類例方法的局部變數:變數名。
內部類屬性:this.變數名
外部類屬性:外部類名.this.變數名
例:
靜態內部類
1.當一個靜態內部類對象存在,並不一定存在對應的外部類對象。因此,靜態內部類的實例方法不能直接訪問外部類的實例方法
2.靜態內部類看作外部類的一個靜態成員,因此,外部類的方法中可以通過:“靜態內部類.名字”的方式訪問靜態內部類的靜態成員,
通過new靜態內部類()訪問靜態內部類的實例。
例:
2.匿名內部類
適用於只需要使用一次的類。比如:鍵盤監聽操作等
結構:
new 父類構造器(實參列表)/實現介面(){
//匿名內部類類體
}
例:
註:
1.匿名內部類沒有訪問修飾
2.匿名內部類沒有構造方法。因為它連名字都沒有。
3.匿名內部類在安卓開發中大量出現
3.局部內部類
在方法內部定義一個類,作用域只限於本方法,稱位局部內部類(很少見)
例: