java基礎之介面

2021-09-02 04:08:06 字數 1863 閱讀 6515

雖然我在學習的過程中很少寫過inte***ce,但是卻經常使用到implements,來讓寫的類遵循某個特定的介面。學習inte***ce,首先我們還是先來了解一下抽象類吧:

抽象方法:僅由宣告,沒有方法體的方法。

包含抽象方法的類叫做抽象類,如果乙個類包含乙個或者多個抽象方法,則該類必須為抽象類,然而抽象類不一定必須具有抽象方法。

抽象類的功能:阻止產生這個類的任何物件(想一想單例模式??),非常有用的重構工具(我也不清楚,等以後知道了再來分析)。

而對於介面inte***ce,inte***ce這個關鍵字產生乙個完全抽象的類,沒有任何具體的實現,介面內的方法自動都是為public的。inte***ce與抽象模擬較而言,其核心優勢在於:介面允許我們可以建立乙個能夠向上轉型為多種基類的類,來實現類似多重繼承的特性(這也是我們前面分析繼承與組合該如何選擇的重要分析點)。

看了看感覺介面並沒有什麼難點,這裡重點學習下兩個設計模式吧:介面卡設計模式和工廠方法設計模式。

①介面卡模式

我們經常遇到的情況是:需要將已有的實現類來滿足特定的介面的呼叫。

public static void process(processor p, object s) }

2)已有的處理器processor介面

public inte***ce processor
3)我們已經具有了高通濾波器highpass和低通濾波器lowpass

public class filter 

public string process(string input)

}public class highpass extends filter

public highpass(double cutoff)

}public class lowpass extends filter

public lowpass(double cutoff)

}

我們可以建立如下的介面卡類:

public class filteradapter implements processor

public string process(object input)

public filteradapter(filter filter)

}

這樣便可以通過完成呼叫。

可以看出filteradapter接收已經擁有的介面fiter,生成滿足需要processor介面的物件。考慮一下這種方式和以前所提到的**(避免由於繼承而導致基類中的方法過度的暴露)有著異曲同工之妙。

②工廠方法模式

假設我們需要建立乙個遊戲平台,可以在上面玩耍不同的遊戲,而不用修改**。

inte***ce game

inte***ce gamefactory

class checker implements game

}class checkersfactory implements gamefactory

}class chess implements game

}class chessfactory implements gamefactory

}public class gameplatform

public static void main(string args)

}

我們可以看出工廠方法的優點在於我們不必事先確定game的型別,我們game的獲取不是通過構造器,而是通過工廠物件呼叫建立game的方法,這樣我們就可以將**與介面的實現相分離,使得gameplatform內的**得到復用。

③介面內的field都自動為static和final,所以不能為空值,即宣告時就必須初始化。

java基礎之介面

介面是一種型別,和抽象類普通類一樣,也有包的概念。1 介面是什麼?生活中,usb 傳輸資料,充電 指紋 解鎖,支付 wifi 傳輸資料,上網 就是介面!簡單理解介面 就是描述了一套 抽象功能的集合,就是能完成的事情,但是不做實現!2 抽象類介面對比 抽象類 部分實現 部分抽象 介面 全部抽象 公共抽...

Java基礎之介面概念

介面的概念 1 介面是一組行為的規範 定義,沒有實現 jdk1.8預設方法 2 使用介面,可以讓我們的程式更加利於變化 3 介面是物件導向程式設計體系中的思想精髓之一 4 物件導向設計法則 基於介面程式設計 介面的定義格式 inte ce 介面名稱 示列 inte ce ieat inte ce i...

java 基礎 介面

提到介面就不得不說介面和抽象類的區別,1 介面是公開的,裡面不能有私有的方法和變數,而抽象類可以有 2 介面裡面的必須都是抽象方法,不過預設狀態下就是abstract型別,不必刻意去定義 3 實現介面時,一定要實現介面裡所定義的所有方法,而繼承抽象類不必要都實現 4 介面可以實現多重繼承,只要在im...