內部類分爲:成員內部類(靜態和非靜態)、匿名內部類、局部內部類this
1.成員內部類(能夠使用private、default、protected、public任意修飾)spa
非靜態內部類對象
1.非靜態內部類必須寄存在一個外部類對象裏。所以,若是有一個非靜態內部類對象那麼必定存在對應的外部類對象blog
2.非靜態內部類能夠直接訪問外部類的成員,可是外部類不能直接訪問非靜態內部類成員接口
3.非靜態內部類不能有靜態方法、靜態屬性和靜態初始化塊。作用域
4.外部類的靜態方法、靜態代碼塊不能訪問非靜態內部類,包括不能使用非靜態內部類定義變量、建立實例開發
5.成員變量訪問:變量
內部類例方法的局部變量:變量名。bfc
內部類屬性:this.變量名方法
外部類屬性:外部類名.this.變量名
例:
靜態內部類
1.當一個靜態內部類對象存在,並不必定存在對應的外部類對象。所以,靜態內部類的實例方法不能直接訪問外部類的實例方法
2.靜態內部類看做外部類的一個靜態成員,所以,外部類的方法中能夠經過:「靜態內部類.名字」的方式訪問靜態內部類的靜態成員,
經過new靜態內部類()訪問靜態內部類的實例。
例:
2.匿名內部類
適用於只須要使用一次的類。好比:鍵盤監聽操做等
結構:
new 父類構造器(實參列表)/實現接口(){
//匿名內部類類體
}
例:
注:
1.匿名內部類沒有訪問修飾
2.匿名內部類沒有構造方法。由於它連名字都沒有。
3.匿名內部類在安卓開發中大量出現
3.局部內部類
在方法內部定義一個類,做用域只限於本方法,稱位局部內部類(不多見)
例: