首頁 > Java > java教程 > 主體

Java中匿名內部類別的總結分享

黄舟
發布: 2017-09-25 10:16:54
原創
1590 人瀏覽過

這篇文章主要介紹了java中的匿名內部類別總結的相關資料,希望透過本文能幫助到大家,需要的朋友可以參考下

 java中的匿名內部類別總結

匿名內部類別也就是沒有名字的內部類別

正因為沒有名字,所以匿名內部類別只能使用一次,它通常用來簡化程式碼寫

但使用匿名內部類別還有個前提條件:必須繼承一個父類別或實作一個介面

實例1:不使用匿名內部類別來實作抽象方法


#
abstract class Person { 
  public abstract void eat(); 
} 
  
class Child extends Person { 
  public void eat() { 
    System.out.println("eat something"); 
  } 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Child(); 
    p.eat(); 
  } 
}
登入後複製

運行結果:eat something

#可以看到,我們用Child繼承了Person類,然後實作了Child的一個實例,將其向上轉型為Person類別的參考

但是,如果此處的Child類別只使用一次,那麼將其編寫為獨立的一個類別豈不是很麻煩?

這個時候就引入了匿名內部類別

實例2:匿名內部類別的基本實作


 public abstract void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}
登入後複製

運行結果:eat something

可以看到,我們直接將抽象類別Person中的方法在大括號中實現了

這樣便可以省略一個類別的書寫

並且,匿名內部類別也能用於介面上

 實例3:在介面上使用匿名內部類別


interface Person { 
  public void eat(); 
} 
  
public class Demo { 
  public static void main(String[] args) { 
    Person p = new Person() { 
      public void eat() { 
        System.out.println("eat something"); 
      } 
    }; 
    p.eat(); 
  } 
}
登入後複製

運行結果:eat something

由上面的例子可以看出,只要一個類別是抽象的或是一個接口,那麼其子類別中的方法都可以使用匿名內部類別來實作

最常用的情況就是在多執行緒的實作上,因為要實作多執行緒必須繼承Thread類別或是繼承Runnable介面

  #實例4:Thread類別的匿名內部類別實作


public class Demo { 
  public static void main(String[] args) { 
    Thread t = new Thread() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    t.start(); 
  } 
}
登入後複製

執行結果:1 2 3 4 5

# 實例5:Runnable介面的匿名內部類別實作


public class Demo { 
  public static void main(String[] args) { 
    Runnable r = new Runnable() { 
      public void run() { 
        for (int i = 1; i <= 5; i++) { 
          System.out.print(i + " "); 
        } 
      } 
    }; 
    Thread t = new Thread(r); 
    t.start(); 
  } 
}
登入後複製

執行結果:1 2 3 4 5

以上是Java中匿名內部類別的總結分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!