<form id="nhtjz"></form>

<address id="nhtjz"><nobr id="nhtjz"></nobr></address> <form id="nhtjz"><nobr id="nhtjz"><progress id="nhtjz"></progress></nobr></form>

<noframes id="nhtjz">
    <span id="nhtjz"><span id="nhtjz"><th id="nhtjz"></th></span></span>
    <form id="nhtjz"></form>

      <address id="nhtjz"><form id="nhtjz"></form></address>
      <noframes id="nhtjz">

      教育行業A股IPO第一股(股票代碼 003032)

      全國咨詢/投訴熱線:400-618-4000

      什么是匿名內部類?怎樣創建匿名內部類?

      更新時間:2021年10月18日15時10分 來源:傳智教育 瀏覽次數:

      好口碑IT培訓

      匿名內部類是沒有名稱的內部類。在Java中調用某個方法時,如果該方法的參數是接口類型,除了可以傳人個接口實現類外,還可以使用實現接口的匿名內部類作為參數,在匿名內部類中直接完成方法的實現。創建匿名內部類的基本語法格式如下:

      new父接口( ) {//匿名內部類實現部分
      下面通過一個案例學習匿名內部類的定義和使用,如文件4-23所示。
      interface Animal {
      
      roid 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所示。

      1634536431372_匿名內部類.png

      圖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修飾符,否則程序編譯時報錯。

      對于初學者而言,可能會覺得匿名內部類的寫法比較難理解,下面分兩步介紹匿名內部類的編寫,具體如下。

      在調用animalShout()方法時,在方法的參數位置寫上new Animal ( ) {},這相當于創建了一個實例對象,并將對象作為參數傳animalShout( )方法。在new Animal( )后面有一對大括號,表示創建的對象為Animal的子類實例,該子類是匿名的,具體代碼如下:

      animalShout (new Animal () {}) ;

      (2)在大括號中編寫匿名子類的實現代碼,具體如下:

      animalShout (new Animal ( ) {public void shoutSustem.out.println (“喵喵.....”);} });

      至此便完成了匿名內部類的編寫。匿名內部類是實現接口的種簡便寫法,在程序中不定非要使用匿名內部類。對于初學者而言,不要求完全掌握這種寫法,只需理解語法就可以。





      猜你喜歡:

      什么是匿名函數?匿名函數和普通函數有哪些區別?

      什么是靜態內部類?怎樣定義靜態內部類

      什么是成員內部類?案例演示成員內部類的使用

      怎樣使用 this關鍵字調用本類?【案例演示】

      傳智教育java后端開發工程師培訓

      农村老太妓女野外BBW