今天開始學java(十五)內部類與匿名內部類

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、匿名內部類是省略了【實現類/子類名稱】,匿名對象是省略了對象名稱

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章