文章目錄
- 前言
- 一、接口(interface)的設計要點與抽象類的區別
- 二、接口(interface)的應用實例
- 2.1、創建一個接口(interface)
- 2.2、創建實現接口的類
- 2.3、通過接口回調調用被類實現的方法
- 總結
前言
面向抽象原則是面向對象四大基本原則的第一條,其重要性不言而喻,面向抽象原則分為抽象類、接口以及面向抽象編程,由于篇幅有限本文我們主要細說接口(interface)的設計與應用,并通過引入案例的形式使概念更便于理解。除去介紹接口(interface)的設計與應用,同時對兩個特別容易混淆的概念——抽象(abstract)類與接口(interface)進行對比。一、接口(interface)的設計要點與抽象類的區別
- 接口中只可以有 public 權限的 abstract 方法,不能有非 abstract 方法。注意這里接口與抽象類的區別,抽象類中既可以有 abstract 方法,也可以有非 abstract 方法。
- 接口由類去實現,即一個類如果實現一個接口就必須重寫接口中的 abstract 方法,即將 abstract 方法重新聲明,但必須去掉 abstract 修飾符,同時要保證聲明的方法名字、返回類型、參數個數和接口中的方法完全相同。這一點與抽象類的非抽象子類重寫父類 abstract 方法的要求是相同的。
- 接口回調。接口回調是指把實現接口的類的對象的引用賦給該接口聲明的接口變量中,這時該接口變量就可以調用被類實現的接口中的方法。接口回調原理類似于抽象類中的上轉型對象調用子類方法的過程。
二、接口(interface)的應用實例
2.1、創建一個接口(interface)
首先我們創建一個接口(interface)Com,里面有一個 abstract 方法 sub(int x, int y),相應代碼如下:
package com.bailu.principle;/** 接口中只可以有public權限的abstract方法,不能有非abstract方法*/
public interface Com {public abstract int sub(int x, int y);
}
2.2、創建實現接口的類
接著我們創建實現接口 Com 的類 ComImp,并且重寫接口中的 abstract 方法 sub(int x, int y),將其實現為計算參數 x 與 y 的差,相應代碼如下:
package com.bailu.principle;/** 接口由類去實現,一個類如果實現一個接口,就必須重寫接口中的abstract方法* 重新將接口中的abstract方法聲明,但必須去掉abstract修飾符去掉* 同時要保證聲明的方法名字、返回類型、參數個數和接口中的方法完全相同* 這一點與抽象類的子類重寫抽象類的abstract方法相同*/
public class ComImp implements Com {// 在重寫Com接口中abstract方法的同時,將其實現為計算參數x與y的差@Overridepublic int sub(int x, int y) {return x - y;}
}
2.3、通過接口回調調用被類實現的方法
通過上述接口回調的原理,這里我們讓 Com 接口聲明的接口變量 com 存放 ComImp 類的對象的引用,那么這時 com 就可以調用 ComImp 類中實現的接口的方法 sub(int x, int y),相應代碼如下:
package com.bailu.principle;/** 讓Com接口聲明的接口變量com存放ComImp類的對象引用* 那么com就可以調用ComImp類實現的接口中的方法*/
public class ApplicationImpl {public static void main(String[] args) {Com com;com = new ComImp();// com變量存放ComImp類的對象的引用int m = com.sub(6, 3);// com回調ComImp類實現的接口方法System.out.println(m);}
}
運行結果如下圖所示:
總結
在本文給大家介紹了面向抽象原則概念中的接口的內容,說明了在開發中接口(interface)的設計要點,并在設計要點中與抽象(abstract)類的內容進行了對比,最為明顯的一點區別就是,在抽象(abstract)類中既可以有 abstract 方法,也可以有非 abstract 方法,而在接口中只能有 public 權限的 abstract 方法,不能有非 abstract 的方法。另外,多注意在抽象類中提到的上轉型對象與接口中的接口回調兩個核心概念。我是白鹿,一個不懈奮斗的程序猿。望本文能對你有所裨益,歡迎大家的一鍵三連!若有其他問題、建議或者補充可以留言在文章下方,感謝大家的支持!