1、概述
內(nèi)部類即在類的內(nèi)部在創(chuàng)建一個類
分為成員內(nèi)部類(直接在類中創(chuàng)建)
局部內(nèi)部類(在成員方法中創(chuàng)建)
匿名內(nèi)部類(局部內(nèi)部類的一種疙剑,三種中最重要
2氯迂、定義
成員內(nèi)部類:
修飾符 class 內(nèi)部類名稱{}
成員內(nèi)部類中:內(nèi)用外,隨意訪問言缤,外用內(nèi)嚼蚀,需要內(nèi)部類對象
局部內(nèi)部類:
class 局部內(nèi)部類名稱{}
注意,不能寫修飾符
匿名內(nèi)部類:
如果接口的實現(xiàn)類(或者父類的子類)只使用一次管挟,那么就省略掉該類的定義轿曙,使用匿名內(nèi)部類
接口名 對象名 = new 接口名(){覆蓋重寫抽象方法};
3、使用
成員內(nèi)部類:
? 1僻孝、間接:在外部類的方法中使用內(nèi)部類导帝,然后main只調(diào)用外部類的方法,要創(chuàng)建對象
? 2穿铆、直接:注意定義方法
外部類名稱.內(nèi)部類名稱 對象名 = new 外部類名稱().new 內(nèi)部類名稱()
內(nèi)部類的同名變量訪問:
? 不用修飾即訪問局部變量
? 使用this即使用內(nèi)部類的成員變量
? 使用Outer.this即使用外部類的成員變量
局部內(nèi)部類只有當(dāng)前方法可以使用您单,只能在當(dāng)前方法中創(chuàng)建對象使用
類可以作為成員變量使用
接口可以作為成員變量類型
接口作為方法的參數(shù)或返回值
java.util.list是ArrayList所實現(xiàn)的接口
所以數(shù)組的定義可以寫成如下形式
List<String> list = new ArrayList<>();
//左邊是接口名稱,右邊是實現(xiàn)類名稱(多態(tài)寫法)