2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Java培訓:匿名內部類的用法

更新時間:2022-07-19 來源:黑馬程序員 瀏覽量:

IT培訓班

  匿名內部類是沒有名稱的內部類。在Java中調用某個方法時,如果該方法的參數是接口類型,除了可以傳入一個接口實現類外,還可以使用實現接口的匿名內部類作為參數,在匿名內部類中直接完成方法的實現。

  創建匿名內部類的基本語法格式如下:

new 父接口 (){
   //匿名內部類實現部分
}

  下面通過一個案例學習匿名內部類的定義和使用,如文件4-23所示。

  文件4-23 Example23.java

interface Animal {
    void shout ();
}
public class Example23{
    public static void main (String[] args) {
        String name = "小花";
        animalShout (new Animal () {
          @Override
          public void shout () {
              System.out.println (name+"喵喵......");
          }
        });
    }
    public static void animalShout (Animal an) {
        an.shout ();
    }
}

  文件4-23的運行結果如圖4-23所示。

1658211807341_匿名內部類示例運行結果.jpg

  圖4-23 文件4-23的運行結果

  文件4-23中,第1~3行代碼創建了Animal接口;第7~12行代碼是調用animalShout()方法,將實現Animal接口的匿名內部類作為animalShout()方法的參數,并在匿名內部類中重寫了Animal接口的shout()方法。

  需要注意的是,在文件4-23中的匿名內部類中訪問了局部變量name,而局部變量name并沒有使用final修飾符修飾,程序也沒有報錯。這是JDK8的新增特性,允許在局部內部類、匿名內部類中訪問非final修飾的局部變量,而在JDK8之前,局部變量前必須加final修飾符,否則程序編譯時報錯。

分享到:
在線咨詢 我要報名
和我們在線交談!