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