使用匿名內部類課使代碼更加簡潔、緊湊,模塊化程度更高。內部類能夠訪問外部內的一切成員變量和方法,包括私有的,而實現接口或繼承類做不到。然而這個不是我說的重點,我說的很簡單,就是匿名內部類的兩種實現方式:第一種,繼承一個類,重寫其方法;第二種,實現一個接口(可以是多個),實現其方法。下面通過代碼來說明:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
public class TestAnonymousInterClass{ public static void main(String args[]){ TestAnonymousInterClass test= new TestAnonymousInterClass(); test.show(); } //在這個方法中構造了一個匿名內部類 private void show(){ Out anonyInter= new Out(){ // 獲取匿名內部類實例 void show(){ //重寫父類的方法 System.out.println( "this is Anonymous InterClass showing." ); } }; anonyInter.show(); // 調用其方法 } } // 這是一個已經存在的類,匿名內部類通過重寫其方法,將會獲得另外的實現 class Out{ void show(){ System.out.println( "this is Out showing." ); } } |
程序運行的輸出結果為:
this is Anonymous InterClass showing.
所以在這里看出,匿名內部類有了自己的實現。其實很簡單,使用匿名內部類是因為我這地方需要有點什么特殊的實現,所以我就在這地方把具體實現也給了出來了。然后我就在這地方獲取它的實例,調用它的方法。
接口的方式,只要把父類換成接口就行了,沒必要給出代碼了。
使用匿名內部類時我們不要忘了我們的目的,我們只是在這地方想對某個類有特殊的實現。而不要想得太多,在匿名內部編寫其它的方法。在匿名內部類中編寫的自己的方法是不可見的。此種做法是毫無意義的,當然一般也不會這么做。在這里只是告訴初學者對于匿名內部類不要想的太多,而要這么想:匿名內部類就是重寫父類或接口的方法。
匿名內部類是沒有名字的,所以我們沒辦法獲得其類型,而只能把它當作超類或接口類型來使用。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持服務器之家!
原文鏈接:http://blog.csdn.net/cntanghai/article/details/6094481