使用匿名內部類課使代碼更加簡潔、緊湊,模塊化程度更高。內部類可以訪問外部內的一切成員變量和方法,包括私有的,而實現接口或繼承類作不到。然而這個不是我說的重點,我說的很簡單,就是匿名內部類的兩種實現方式:第一種,繼承一個類,重寫其方法;第二種,實現一個接口(能夠是多個),實現其方法。下面經過代碼來講明:模塊化
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
this is Anonymous InterClass showing.spa
因此在這裏看出,匿名內部類有了本身的實現。其實很簡單,使用匿名內部類是由於我這地方須要有點什麼特殊的實現,因此我就在這地方把具體實現也給了出來了。而後我就在這地方獲取它的實例,調用它的方法。code
接口的方式,只要把父類換成接口就好了,不必給出代碼了。blog
使用匿名內部類時咱們不要忘了咱們的目的,咱們只是在這地方想對某個類有特殊的實現。而不要想得太多,在匿名內部編寫其它的方法。在匿名內部類中編寫的本身的方法是不可見的。此種作法是毫無心義的,固然通常也不會這麼作。在這裏只是告訴初學者對於匿名內部類不要想的太多,而要這麼想:匿名內部類就是重寫父類或接口的方法。繼承
匿名內部類是沒有名字的,因此咱們沒辦法得到其類型,而只能把它看成超類或接口類型來使用。接口