匿名內部類中關於new Runnable()的使用
阿新 • • 發佈:2018-12-26
匿名內部類也就是沒有名字的內部類,正因為沒有名字,所以匿名內部類只能使用一次,它通常用來簡化程式碼編寫。
但使用匿名內部類還有個前提條件:必須繼承一個父類或實現一個介面
1、繼承一個父類的匿名內部類實現:
abstract class People { public abstract void eat(); } public class Demo { public static void main(String[] args) { People p = new People() { public void eat() { System.out.println("I can eat "); } }; p.eat(); } }
2、在介面上使用匿名內部類:
interface People { public void eat(); } public class Demo { public static void main(String[] args) { People p = new People() { public void eat() { System.out.println("I can eat "); } }; p.eat(); } }
此處 new People( )看似例項化了一個介面,事實並非如此,介面式的匿名內部類是實現了一個介面的匿名類。而且只能實現一個介面。
ps再來說一下執行緒建立的兩種方式:
(1)繼承Thread類的方式因為耦合性太強,所以一般不用。
(2)常用實現Runnable介面的建立執行緒方式。
但是我們更喜歡用匿名內部類的方式來建立一個執行緒。程式碼如下:
new Thread(new Runnable() { @Override public void run() { int i=0; while(true){ i++; System.out.println("this is 執行緒"+i); } } }).start();
就這一句話就可以建立並且啟動一個執行緒,相對來說比較方便。而且特別直觀易懂。
此處的new Runnable( )並沒有例項化了一個介面,切記切記!!!!