java中有四種權限修飾符:
內部類
如果一個事務的內部包含另一個事物,那麼這就是一個類內部包含另一個類
分類:
1、成員內部類
2、局部內部類(其中包含匿名內部類)
成員內部類的定義格式:
修飾符 class 外部類名稱{
修飾符 class 內部類名稱{
//…
}
//…
}
注意:內用外,隨意訪問。外用內,需要內部類對象。
成員內部類
1、在外部類的方法當中使用內部類,main只是調用外部類的方法,這叫做間接方法
2、直接方式,公式:
外部類名稱.內部類名稱 對象名 = new 外部類名稱().內部類名稱();
如果一個類是定義在一個方法內部的,那麼就是一個局部內部類
只有當前所屬的方法才能使用他,出了這個方法就不能用了
格式:
修飾符 class 外部類名稱{
修飾符 返回值類型 外部類方法名稱(參數列表){
class 局部內部類名稱{
//...
}
}
}
在定義一個類的時候,權限修飾符的規則會發生改變
1、外部類:public / (default)
2、成員內部類:public / protected / (default) / private
3、局部內部類,什麼都不能寫
匿名內部類
如果接口的實現類(或者是弗雷德子類),只需要使用唯一的一次,那麼這種情況下,就可以省略掉該類的定義,而改爲使用【匿名內部類】
匿名內部類的定義格式:
接口名稱 對象名 = new 接口名稱(){
//覆蓋重寫接口中所有抽象方法,別忘了在大括號寫分號
};
格式解析“new 接口名稱(){…}”:
1、new代表創建對象的動作
2、接口名稱就是匿名內部類需要實現哪個接口
3、{…}匿名內部類的內容
注意事項
1、匿名內部類在創建對象時只能使用唯一一次,如果希望多次創建對象,且內容一樣,需要單獨定義一個實現類
2、匿名對象,在【調用方法】時只能調用唯一一次,如果需要調用多次,必須得給對象起個名字
3、匿名內部類是省略了【實現類/子類名稱】,匿名對象是省略了對象名稱