摘 要:接口是Java語言中最為重要的概念,也是使用為廣泛的功能。在軟件產(chǎn)品的生產(chǎn)過程中,一直都希望它可以像硬件一樣,具有面向組件、接口似的開發(fā)特點。所以,在面向?qū)ο蟪绦蛟O(shè)計語言中、引入了抽象編程的概念。在Java語言中,接口是實現(xiàn)抽象編程的關(guān)鍵技術(shù)。接口是Java學習中最重要的概念,可以說接口是Java的靈魂。本文將從接口的概述、接口的定義、接口的作用、接口的意義以及接口的應用等方面論述。
關(guān)鍵詞:Java語言;接口;計算機;
一、接口的概述
接口的概念比較抽象,可以理解為接口是一系列方法和特征的集合。方法和特征是類的組成部分,如果從編程的角度而言,Java的接口可以對應Java中特定的語法結(jié)構(gòu)。Java接口與Java抽象類是不一樣的, 抽象類可以實現(xiàn)某些方法,而接口則不能。下面,從接口的概念和功能上迸一步詳細述其存在的意義。
接口的概念就比如工廠模式,用工廠模式來實例化對象。工廠模式可以比喻為生產(chǎn)車的一個車間,利用車間生產(chǎn)出各種類型的車輛?,F(xiàn)在要利用車間生產(chǎn)出汽車、卡車、跑車、公交車,四種車型。在工廠模式中,首先要有建設(shè)車型的一個一個標準,就是一個具體的框架類。有了框架之后,要設(shè)計出汽車、卡車、跑車、公交車四種不同的車型,在標準類的基礎(chǔ)上添加抽象方法,通過添加汽車、卡車、跑車、公交車的抽象方法來決絕問題,添加抽象方法。有了抽象方法之后,利用具體類來實現(xiàn)。當中添加抽象方法的過程就是接口,利用接口來連接生產(chǎn)車的框架功能,和實現(xiàn)上產(chǎn)車的具體功能。
二、Java接口的定義
現(xiàn)實世界中的接口有USB接口,充電器接口,電腦接口。現(xiàn)實世界中接口的作用是鏈接兩個物體,是起連接作用。Java中接口作用與現(xiàn)實世界中普通接口一樣,鏈接不同的功能模塊,實現(xiàn)功能與功能之間的交互。在今后的開發(fā)中接口是使用頻率最高的組件。
如果一個功能中只有全局常量和抽象方法,那么我們稱這個功能為接口,沒有普通屬性,沒有普通常量,更沒有構(gòu)造方法,沒有第三個組成部分,這就是接口的定義也相對簡單。 要定義一個接口使用interface關(guān)鍵字完成,interface在英文中的含義就是接口的含義比較好理解。接口把方法的特征和方法的實現(xiàn)分割開來。這種分割,體現(xiàn)在接口常常代表一個角色(role),它包裝與該角色相關(guān)的操作和屬性,而實現(xiàn)這個接口的類扮演這個角色的演員(類)。一個角色(接口)可以由不同的演員(類)來演,而不同的演員(類)之間除了扮演一個共同的角色(接口)之外,并不要求有任何其他的共同之處。
三、Java語言中定義接口的意義
類所描述的是一個實體, 包含實體的狀態(tài)和動作。一個實體能發(fā)出的動作由接口來定義。那么在類中對一個接口的定義,從本質(zhì)上講,跟在抽象類中定義一個接口一樣,也體現(xiàn)著它的抽象性,即它是可以變化的。從面向?qū)ο蟮乃枷雭砜?,要封裝好變化的部分。這可能涉及到的涉及模式:模板涉及模式/命令涉及模式,在這個util類里面封裝了會改變的Worker,可以理解為,util類里面有自己的算法:一部分是固定的,而另外一部分是可變的,尚學堂陳老師指出這個可變的部分就變成了一個接口,接口則是特殊的抽象類, worker可能在不同的工作環(huán)境有不同的工作方式,例如work()、onvaction()等等 。
因此在類中定義一個接口是有其必要性的,它代表著一種編程思想, 定義接口的目的是讓代碼有更強的可擴展性。那么為何要定義接口?以及接口有何意義呢?那么關(guān)于接口的意義可以從以下幾點來進行說明:
定義接口的重要性:在Java編程,abstract class和interface是支持抽象類定義的兩種機制。正是由于這兩種機制的存在,才使得Java成為面向?qū)ο蟮木幊陶Z言;定義接口有利于代碼的規(guī)范:對于一個大型項目而言,會對一些主要的接口來進行定義,或者清理一些沒有必要的接口。這樣做的目的一方面是為了給開發(fā)人員一個清晰的指示,告訴他們哪些業(yè)務(wù)需要實現(xiàn);同時也能防止由于開發(fā)人員隨意命名而導致的命名不清晰和代碼混亂,影響開發(fā)效率;有利于對代碼進行維護:比如你要做一個畫板程序,其中里面有一個面板類,主要負責繪畫功能,然后你就這樣定義了這個類??墒窃诓痪脤?,現(xiàn)有的類不能夠滿足需要,然后你又要重新設(shè)計這個類,更糟糕是你可能要放棄這個類,那么其他地方可能有引用他,這樣修改起來很麻煩。如果你一開始定義一個接口,把繪制功能放在接口里,然后定義類時實現(xiàn)這個接口,然后你只要用這個接口去引用實現(xiàn)它的類就行了,以后要換的話只不過是引用另一個類而已,這樣就達到維護、拓展的方便性;保證代碼的安全和嚴密:一個好的程序一定符合高內(nèi)聚低耦合的特征,那么實現(xiàn)低耦合,定義接口是一個很好的方法,能夠讓系統(tǒng)的功能較好地實現(xiàn),而不涉及任何具體的實現(xiàn)細節(jié)。
四、接口的作用
通過接口可以實現(xiàn)不相關(guān)類的相同行為,而不需要了解對象所對應的類。通過接口可以指明多個類需要實現(xiàn)的方法。類描述了一個實體,包括實體的狀態(tài),也包括實體可能發(fā)出的動作。接口定義了一個實體可能發(fā)出的動作。但是只是定義了這些動作的原型,沒有實現(xiàn),也沒有任何狀態(tài)信息。所以接口有點像一個規(guī)范、一個協(xié)議,是一個抽象的概念;而類則是實現(xiàn)了這個協(xié)議,滿足了這個規(guī)范的具體實體,是一個具體的概念。接口會出現(xiàn),關(guān)鍵的原因應該是Java中向上轉(zhuǎn)型的出現(xiàn),因為向上轉(zhuǎn)型,子類中有一些父類中不存在的方法便不能繼續(xù)調(diào)用了。這樣就很麻煩,我們需要子類中的方法,但是這下該怎么辦呢?
第一種在父類中加子類的方法。但是,這個方法在父類中其實真的沒有必要,方法函數(shù)體都不需要。所以會用抽象方法,這樣就有了抽象方法的誕生。可是就算這樣了,問題還是沒有解決,因為真的太麻煩了,如果有其他的子類要繼承父類,也難免會有向上轉(zhuǎn)型的時候。于是就有了第二種方法,接口便誕生了,這也解釋了為什么接口中都是抽象的方法!所以有了接口,子類中需要的方法,但是父類中沒有的方法可以直接用接口來完成,在多人合作完成一項工程的時候也更加的方便。從程序角度,簡單理解,接口就是函數(shù)聲明,類就是函數(shù)實現(xiàn)。需要注意的是同一個聲明可能有很多種實現(xiàn)。
五、接口的實際應用
電腦上可以使用U盤、打印機、MP3。這些設(shè)備都是連接到USB接口上的。要實現(xiàn)U盤、打印機、MP3在電腦上可以運行使用的代碼,首先要分析怎么把U盤、打印機、MP3連接到電腦上。電腦、U盤、打印機、MP3都是類,分別寫出這些類的實現(xiàn)。所有的代碼要進行開發(fā),一定要首先開發(fā)出USB接口標準。因為有了標準后,電腦才可以使用這些標準,設(shè)備廠商才可以設(shè)計USB設(shè)備。通過USB接口實現(xiàn)類與類之間的連接。并通過連接電腦來實現(xiàn)其功能。
六、總結(jié)
接口的出現(xiàn)意義在于改變了編程方法,決絕了Java語言單繼承問題,接口通過多繼承方式實現(xiàn)了接口之間的多重繼承。 接口起到了連接不同功能模塊的作用,在Java編程中,接口是最常使用的連接方式。在實現(xiàn)接口時,除非實現(xiàn)了接口的類是抽象類,否則該類要定義接口中的所有方法。接口無法被實例化,但是可以被實現(xiàn)。一個實現(xiàn)接口的類,必須實現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個變量,他們可以成為一個空指針,或是被綁定在一個以此接口實現(xiàn)的對象。在未來的開發(fā)過程中接口是最常用的連接組件,實現(xiàn)具體功能。
參考文獻:
[1]杰克遜·埃爾森.Java接口的全面應用.北京郵電出版社[M].2017.09.
作者簡介:
趙美展(1997年1月),籍貫:漢族,學歷:本科,單位職稱:助教,研究放向:Java方向.