Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可以implements(實現)interface(接口)?


http://blog.csdn.net/fhm727/article/details/5220003

1、什么是匿名內部類?

      內部類,存在於另一個類內部的類,而匿名內部類,顧名思義,就是沒有名字的內部類。

 

2、為什么需要匿名內部類?

     每個inner class都能夠各自繼承某一實現類(implementation)。因此,inner class不受限於outer class是否已繼承自某一實現類。
如果少了inner class所提供的“繼承自多個具象(concrete)或抽象(abstract)類”的能力,設計上和編程上的某些問題會變得十分棘手。

所以,從某個角度來看inner class,你可以說它是多重繼承問題的完整解決方案。interface能夠解決其中一部分問題,但inner classes
才能有效而實際地允許“多重實現繼承(multiple implementation)”。也就是說,inner classes實際上允許你繼承多個non-interface。

從這個層面上使用內部類時一般都是通過其父類或繼承的接口來進行實例化和初始化的,如3中所示,這時內部類的名字(a)是多余的,所以就使用了匿名內部類

3、怎么實現匿名內部類?

     匿名內部類的實現非常簡單,如有一接口
 Interface A{ public void method(); }

這時你可以寫一個如下的語句得到接口A的實現類的對象

A a=new A(){ public void method(){System.out.println("hehe");} };

而其中的{ public void method(){System.out.println("hehe");} };就是定義了一個匿名內部類

4、問題答案 以上可以看出匿名內部類在實現時必須借助一個類或一個接口,若從這個層次上講它是可以繼承其他類也可以實現接口的,但若是通過extendsimplements關鍵字那是不可能的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM