java--面向接口编程
之前看的一本書的筆記,上周再看設(shè)計模式的時候,想到了這篇之前在看某本書時候的筆記。
面向接口編程很重要的一點就是接口回調(diào),用接口聲明的變量稱作接口變量,屬于引用型變量,可以存放實現(xiàn)該接口的類的實例的引用,對象引用。
接口回調(diào):可以把實現(xiàn)某一接口的類創(chuàng)建的對象的引用賦值給該接口聲明的接口變量,那么該接口變量就可以調(diào)用被類實現(xiàn)的接口方法。
Com com; ? ? ?//接口
ImplCom object; ? ?//實現(xiàn)接口的對象
com = object; ? ? ? ?//接口回調(diào),com會根據(jù)對象的不同而實現(xiàn)不同的接口方法,回調(diào)類重寫的接口方法
? ? ? 接口和abstract類的比較如下:
? ? ?abstract類和接口都可以有abstract方法。
? ? ?接口中只可以有常量,不能有變量;而abstract類中既可以有常量也可以有變量。
? ? ?abstract類中也可以有非abstract方法,接口不可以。
? ? ?在設(shè)計程序時應(yīng)當根據(jù)具體的分析來確定是使用抽象類還是接口。abstract類除了提供重要的需要重寫的abstract方法外,也提供了子類可以繼承的變量和非abstract方法。如果某個重要問題需要使用繼承才能更好地解決,比如,子類需要重寫父類的abstract方法,還需要從父類繼承一些變量或繼承一些重要的非abstract方法,就可以考慮用abstract類。如果某個問題不需要繼承,只是需要若干個類給出某些重要的abstract方法的實現(xiàn)細節(jié),就可以考慮使用接口。
? ? ? ?使用接口編程的最重要的核心思想就是使用接口回調(diào),及接口變量存放實現(xiàn)該接口的類的對象的引用,從而接口變量就可以回調(diào)類實現(xiàn)的接口方法。
?
?
| 1 2 3 4 | public?interface?Advertisement { ????public?void?showAdvertisement(); ????public?String getCorpName(); } |
2、設(shè)計AdvertisementBoard類(廣告牌),該類有一個show(Advertisement adver)方法,該方法的參數(shù)是接口Advertisement的類型,顯然該參數(shù)adver可以存放任何實現(xiàn)Advertisement接口的類的對象的引用,并回調(diào)類重寫的接口方法showAdvertisement()來顯示公司的廣告詞,回調(diào)類重寫的接口方法getCorpName來獲取公司名稱。
| 1 2 3 4 5 6 | public?class?AdvertisementBoard{ ????public?void?show (Advertisement adver){ ????????System.out.println(adver.getCorpName()+"廣告詞"); ????????adver.showAdvertisement();?//接口回調(diào) ????} } |
實現(xiàn)接口的A公司類:
| 1 2 3 4 5 6 7 8 | public?class?Acorp implement Advertisement { ????public?void?showAdvertisement(){ ????????System.out.println("AAAAAAAAAAAAAAAAA"); ????} ????public?String getCorpName(){ ????????return?"A Corp"; ????} } |
實現(xiàn)接口的B公司類:
| 1 2 3 4 5 6 7 8 | public?class?Bcorp implement Advertisement { ????public?void?showAdvertisement(){ ????????System.out.println("BBBBBBBBBBBBBBBBB"); ????} ????public?String getCorpName(){ ????????return?"B Corp"; ????} } |
運行住程序:
| 1 2 3 4 5 6 7 | public?class?test (){ ????public?state?void?main (string args[]){ ????????AdvertisementBoard board =?new?AdvertisementBoard(); ????????board.show(new?Acorp()); ????????board.show(new?Bcorp()); ????} } |
最后程序會根據(jù)對象的不同調(diào)用不同的方法。若想要添加C公司,只要實現(xiàn)接口的方法就可以了。
轉(zhuǎn)載于:https://www.cnblogs.com/silence-hust/p/4147403.html
總結(jié)
以上是生活随笔為你收集整理的java--面向接口编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于解决[INSTALL_FAILED_
- 下一篇: JPG各种输入框样式