java--面向接口編程


之前看的一本書的筆記,上周再看設計模式的時候,想到了這篇之前在看某本書時候的筆記。

面向接口編程很重要的一點就是接口回調,用接口聲明的變量稱作接口變量,屬於引用型變量,可以存放實現該接口的類的實例的引用,對象引用。

接口回調:可以把實現某一接口的類創建的對象的引用賦值給該接口聲明的接口變量,那么該接口變量就可以調用被類實現的接口方法。

Com com;      //接口

ImplCom object;    //實現接口的對象

com = object;        //接口回調,com會根據對象的不同而實現不同的接口方法,回調類重寫的接口方法

      接口和abstract類的比較如下:

     abstract類和接口都可以有abstract方法。

     接口中只可以有常量,不能有變量;而abstract類中既可以有常量也可以有變量。

     abstract類中也可以有非abstract方法,接口不可以。

     在設計程序時應當根據具體的分析來確定是使用抽象類還是接口。abstract類除了提供重要的需要重寫的abstract方法外,也提供了子類可以繼承的變量和非abstract方法。如果某個重要問題需要使用繼承才能更好地解決,比如,子類需要重寫父類的abstract方法,還需要從父類繼承一些變量或繼承一些重要的非abstract方法,就可以考慮用abstract類。如果某個問題不需要繼承,只是需要若干個類給出某些重要的abstract方法的實現細節,就可以考慮使用接口。

       使用接口編程的最重要的核心思想就是使用接口回調,及接口變量存放實現該接口的類的對象的引用,從而接口變量就可以回調類實現的接口方法。

 

 

1
2
3
4
public  interface  Advertisement {
     public  void  showAdvertisement();
     public  String getCorpName();
}

2、設計AdvertisementBoard類(廣告牌),該類有一個show(Advertisement adver)方法,該方法的參數是接口Advertisement的類型,顯然該參數adver可以存放任何實現Advertisement接口的類的對象的引用,並回調類重寫的接口方法showAdvertisement()來顯示公司的廣告詞,回調類重寫的接口方法getCorpName來獲取公司名稱。

1
2
3
4
5
6
public  class  AdvertisementBoard{
     public  void  show (Advertisement adver){
         System.out.println(adver.getCorpName()+ "廣告詞" );
         adver.showAdvertisement();  //接口回調
     }
}

實現接口的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" ;
     }
}

實現接口的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());
     }
}

最后程序會根據對象的不同調用不同的方法。若想要添加C公司,只要實現接口的方法就可以了。


免責聲明!

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



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