匿名內部類

匿名內部類也就是沒有名字的內部類,正因爲沒有名字,所以匿名內部類只能使用一次,它通常用來簡化代碼編寫。

但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個接口

 

1、繼承一個父類的匿名內部類實現:

[java] view plain copy
  1. abstract class People {  
  2.     public abstract void eat();  
  3. }  
  4.    
  5. public class Demo {  
  6.     public static void main(String[] args) {  
  7.         People p = new People() {  
  8.             public void eat() {  
  9.                 System.out.println("I can eat ");  
  10.             }  
  11.         };  
  12.         p.eat();  
  13.     }  
  14. }  


 

2、在接口上使用匿名內部類:

[java] view plain copy
  1. interface People {  
  2.     public void eat();  
  3. }  
  4.    
  5. public class Demo {  
  6.     public static void main(String[] args) {  
  7.         People p = new People() {             
  8.             public void eat() {  
  9.                 System.out.println("I can eat ");  
  10.             }  
  11.         };  
  12.         p.eat();  
  13.     }  
  14. }  


        此處 new People( )看似實例化了一個接口,事實並非如此,接口式的匿名內部類是實現了一個接口的匿名類。而且只能實現一個接口。

 

 

 

ps再來說一下線程創建的兩種方式:

(1)繼承Thread類的方式因爲耦合性太強,所以一般不用。

(2)常用實現Runnable接口的創建線程方式。

 

但是我們更喜歡用匿名內部類的方式來創建一個線程。代碼如下:

[java] view plain copy
  1. new Thread(new Runnable() {  
  2.               
  3.             @Override  
  4.             public void run() {  
  5.                 int i=0;  
  6.                 while(true){  
  7.                     i++;  
  8.                     System.out.println("this is 線程"+i);  
  9.                 }  
  10.                   
  11.                   
  12.             }  
  13.         }).start();  

 

就這一句話就可以創建並且啓動一個線程,相對來說比較方便。而且特別直觀易懂。

此處的new Runnable( )並沒有實例化了一個接口,切記切記!!!!

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