欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java接口的作用以及使用說明

 更新時(shí)間:2024年11月28日 09:23:25   作者:程序媛_小白  
接口是一種規(guī)范,定義了一組方法的原型,但沒有實(shí)現(xiàn),類通過實(shí)現(xiàn)接口來實(shí)現(xiàn)接口中的抽象方法,接口可以提供規(guī)范性、擴(kuò)展性和可插入性,在Java中,接口可以用來聲明一個(gè)變量,實(shí)現(xiàn)接口的類必須實(shí)現(xiàn)接口中定義的所有方法,接口提供了一種機(jī)制

接口的定義

接口泛指實(shí)體把自己提供給外界的一種抽象化物(可以為另一實(shí)體),用以由內(nèi)部操作分離出外部溝通方法,使其能被內(nèi)部修改而不影響外界其他實(shí)體與其交互的方式。

人類與電腦等信息機(jī)器或人類與程序之間的接口稱為用戶界面。電腦等信息機(jī)器硬件組件間的接口叫硬件接口。電腦等信息機(jī)器軟件組件間的接口叫軟件接口。

在計(jì)算機(jī)中,接口是計(jì)算機(jī)系統(tǒng)中兩個(gè)獨(dú)立的部件進(jìn)行信息交換的共享邊界。這種交換可以發(fā)生在計(jì)算機(jī)軟、硬件,外部設(shè)備或進(jìn)行操作的人之間,也可以是它們的結(jié)合。

接口的優(yōu)勢(shì)

規(guī)范性

接口就是規(guī)范,在整個(gè)系統(tǒng)設(shè)計(jì)中,涉及到很多層,為了使各個(gè)層之間調(diào)用透明話,你只需要知道接口,按照這個(gè)接口做你具體做的事情,就可以融合到整個(gè)系統(tǒng)中了。

生活中的例子很多,例如:插頭、插座,有標(biāo)準(zhǔn)的規(guī)范告訴你插頭應(yīng)該是幾個(gè)腳,插座是幾個(gè)孔等等,做插頭、插座的公司就是根據(jù)這個(gè)規(guī)范來做插頭、插座,而不需要做完一個(gè)插頭就跑遍全世界去試用一下這個(gè)插頭做的對(duì)不對(duì)。

擴(kuò)展性

在項(xiàng)目開發(fā)過程中,由于客戶的需求經(jīng)常變化,如果不采用接口,那么我們必須不停改寫現(xiàn)有的業(yè)務(wù)代碼。改寫代碼可能產(chǎn)生新的BUG,而且改寫代碼還會(huì)影響到調(diào)用該業(yè)務(wù)的類,可能全都需要修改,影響系統(tǒng)本身的穩(wěn)定性。到最后,可能會(huì)出現(xiàn)代碼凌亂,不易讀懂,

后接手的人無法讀懂代碼,系統(tǒng)的維護(hù)工作越來越重,最終可能導(dǎo)致項(xiàng)目失敗。

Java接口的定義

接口在JAVA編程語言中是一個(gè)抽象類型,是抽象方法的集合,接口通常以interface來聲明。一個(gè)類通過繼承接口的方式,從而來繼承接口的抽象方法。

接口并不是類,編寫接口的方式和類很相似,但是它們屬于不同的概念。類描述對(duì)象的屬性和方法。接口則包含類要實(shí)現(xiàn)的方法。

除非實(shí)現(xiàn)接口的類是抽象類,否則該類要定義接口中的所有方法。

接口無法被實(shí)例化,但是可以被實(shí)現(xiàn)。一個(gè)實(shí)現(xiàn)接口的類,必須實(shí)現(xiàn)接口內(nèi)所描述的所有方法,否則就必須聲明為抽象類。另外,在 Java 中,接口類型可用來聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。

Java接口的作用

  • 通過接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需要了解對(duì)象所對(duì)應(yīng)的類。
  • 通過接口可以指明多個(gè)類需要實(shí)現(xiàn)的方法。
  • 通過接口可以了解對(duì)象的交互界面,而不需了解對(duì)象所對(duì)應(yīng)的類。

類描述了一個(gè)實(shí)體,包括實(shí)體的狀態(tài),也包括實(shí)體可能發(fā)出的動(dòng)作。

接口定義了一個(gè)實(shí)體可能發(fā)出的動(dòng)作。但是只是定義了這些動(dòng)作的原型,沒有實(shí)現(xiàn),也沒有任何狀態(tài)信息。

所以接口有點(diǎn)象一個(gè)規(guī)范、一個(gè)協(xié)議,是一個(gè)抽象的概念;而類則是實(shí)現(xiàn)了這個(gè)協(xié)議,滿足了這個(gè)規(guī)范的具體實(shí)體,是一個(gè)具體的概念。

從程序角度,簡單理解,接口就是函數(shù)聲明,類就是函數(shù)實(shí)現(xiàn)。需要注意的是同一個(gè)聲明可能有很多種實(shí)現(xiàn)。

1、接口中定義類方法的原型,但是不能說是空方法,因?yàn)榭辗椒ǖ囊馑际怯袑?shí)現(xiàn)體,只不過實(shí)現(xiàn)體是空操作。實(shí)際上接口沒有定義任何實(shí)現(xiàn)體。具體的實(shí)現(xiàn)體都是在實(shí)現(xiàn)接口的類中,接口只是定義了這些方法的調(diào)用方式。

你當(dāng)然也可以不用接口,直接在類里面寫方法,但是如果你的一組方法需要在很多類里實(shí)現(xiàn),那么把它們抽象出來,做成一個(gè)接口規(guī)范,不是更好么?

2、一個(gè)類描述了一個(gè)實(shí)體,這個(gè)實(shí)體可能是一個(gè)復(fù)雜的對(duì)象,它的動(dòng)作很多,如果把這些動(dòng)作分類,用接口a定義其中的某一組動(dòng)作,接口b定義其中的另外一組動(dòng)作,這樣的結(jié)構(gòu),比較清楚。

這種方式具備了多繼承的優(yōu)點(diǎn),避免了多繼承的缺陷。實(shí)際上在歷史上,接口在很大程度上,是為了解決多繼承帶來的種種問題而設(shè)計(jì)出來的。

3、包中那些已定義的接口,怎么知道那里面定義了什么方法。

接口里定義了方法的輸入輸出,這些都是協(xié)議,具體的實(shí)現(xiàn)都在每個(gè)類中。對(duì)于很多只需要抽象接口的地方,不需要知道具體的類是什么,只要這個(gè)類實(shí)現(xiàn)了這個(gè)接口就可以了。

Java接口的意義

接口會(huì)出現(xiàn),最關(guān)鍵的原因應(yīng)該是Java中向上轉(zhuǎn)型的出現(xiàn),因?yàn)橄蛏限D(zhuǎn)型,子類中一些父類中不存在的方法(或者說不共用的方法)便不能繼續(xù)調(diào)用了。這樣就很麻煩,我們需要子類中的方法,但是這下該怎么辦呢?

第一種在父類中加子類的方法。但是,這個(gè)方法在父類中其實(shí)真的沒有必要,方法函數(shù)體都不需要。所以會(huì)用抽象方法,這樣就有了抽象方法的誕生??墒蔷退氵@樣了,問題還是沒有解決,因?yàn)檎娴奶闊┝?,如果有其他的子類要繼承父類,也難免會(huì)有向上轉(zhuǎn)型的時(shí)候,那么,這個(gè)時(shí)候難道要一直往父類中加抽象方法么?顯然不合理!

于是就有了第二種方法,接口便誕生了,這也解釋了為什么接口中都是抽象的方法!所以有了接口,子類中需要的方法,但是父類中沒有的方法可以直接用接口來完成,也就不用再修改父類的方法,在多人合作完成一項(xiàng)工程的時(shí)候也更加的方便。

Java接口的使用

兩個(gè)類中的兩個(gè)類似的功能,調(diào)用他們的類動(dòng)態(tài)的決定一種實(shí)現(xiàn),那他們提供一個(gè)抽象父類,子類分別實(shí)現(xiàn)父類所定義的方法。

問題的出現(xiàn):Java是一種單繼承的語言,一般情況下,哪個(gè)具體類可能已經(jīng)有了一個(gè)超類,解決是給它的父類加父類,或者給它父類的父類加父類,直到移動(dòng)到類等級(jí)結(jié)構(gòu)的最頂端。這樣一來,對(duì)一個(gè)具體類的可插入性的設(shè)計(jì),就變成了對(duì)整個(gè)等級(jí)結(jié)構(gòu)中所有類的修改。

可插入性

在一個(gè)等級(jí)結(jié)構(gòu)中的任何一個(gè)類都可以實(shí)現(xiàn)一個(gè)接口,這個(gè)接口會(huì)影響到此類的所有子類,但不會(huì)影響到此類的任何超類。此類將不得不實(shí)現(xiàn)這個(gè)接口所規(guī)定的方法,而其子類可以從此類自動(dòng)繼承這些方法,當(dāng)然也可以選擇置換掉所有的這些方法,或者其中的某一些方法,這時(shí)候,這些子類具有了可插入性(并且可以用這個(gè)接口類型裝載,傳遞實(shí)現(xiàn)了他的所有子類)。

我們關(guān)心的不是那一個(gè)具體的類,而是這個(gè)類是否實(shí)現(xiàn)了我們需要的接口。

接口提供了關(guān)聯(lián)以及方法調(diào)用上的可插入性,軟件系統(tǒng)的規(guī)模越大,生命周期越長,接口使得軟件系統(tǒng)的靈活性和可擴(kuò)展性,可插入性方面得到保證。

類型

使用Java接口將軟件單位與內(nèi)部和外部耦合起來。使用Java接口不是具體的類進(jìn)行變量的類型聲明,方法的返還類型聲明,參量的類型聲明,以及數(shù)據(jù)類型的轉(zhuǎn)換。

在理想的情況下,一個(gè)具體的Java類應(yīng)當(dāng)只實(shí)現(xiàn)Java接口和抽象Java類中聲明的方法,而不應(yīng)當(dāng)給多余方法。

等級(jí)結(jié)構(gòu)

Java接口(以及抽象類)一般用來作為一個(gè)類型的等級(jí)結(jié)構(gòu)的起點(diǎn)。

如果一個(gè)類已經(jīng)有了一個(gè)主要的超類型,那么通過實(shí)現(xiàn)一個(gè)接口,這個(gè)類可以擁有另一個(gè)次要的超類型,這種次要的超類型叫做混合類型。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中常用的Lambda表達(dá)式案例解析

    Java中常用的Lambda表達(dá)式案例解析

    這篇文章主要介紹了Java中常用的Lambda表達(dá)式案例解析,Lambxda?使用比較多的場(chǎng)景,就是集合類下的?Lambda?流操作,往往幾行代碼可以幫助我們實(shí)現(xiàn)復(fù)雜代碼,下面和我小編一起進(jìn)入文章學(xué)習(xí)該詳細(xì)內(nèi)容吧
    2022-04-04
  • 淺談JAVA內(nèi)存分配與參數(shù)傳遞

    淺談JAVA內(nèi)存分配與參數(shù)傳遞

    這篇文章主要介紹了JAVA內(nèi)存分配與參數(shù)傳遞,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • SpringBoot中Dozer的使用小結(jié)

    SpringBoot中Dozer的使用小結(jié)

    dozer是用來兩個(gè)對(duì)象之間屬性轉(zhuǎn)換的工具,有了這個(gè)工具之后,我們將一個(gè)對(duì)象的所有屬性值轉(zhuǎn)給另一個(gè)對(duì)象時(shí),就不需要再去寫重復(fù)的set和get方法了,下面介紹下SpringBoot中Dozer的使用,感興趣的朋友一起看看吧
    2022-03-03
  • java反射機(jī)制實(shí)戰(zhàn)示例分享

    java反射機(jī)制實(shí)戰(zhàn)示例分享

    這篇文章主要介紹了java反射機(jī)制實(shí)戰(zhàn)示例,需要的朋友可以參考下
    2014-03-03
  • Java多線程實(shí)現(xiàn)Runnable方式

    Java多線程實(shí)現(xiàn)Runnable方式

    這篇文章主要為大家詳細(xì)介紹了Java多線程如何實(shí)現(xiàn)Runnable方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 淺談Springboot2.0防止XSS攻擊的幾種方式

    淺談Springboot2.0防止XSS攻擊的幾種方式

    本文主要介紹了Springboot2.0防止XSS攻擊的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • SpringBoot集成Redis流程詳解

    SpringBoot集成Redis流程詳解

    這篇文章主要介紹了SpringBoot集成Redis流程詳解,導(dǎo)入jar包,編寫配置類,編寫util類,配置yml這四個(gè)步驟,有詳細(xì)的代碼示例,,需要的朋友可以參考下
    2023-05-05
  • SpringCloud Gateway路由核心原理解析

    SpringCloud Gateway路由核心原理解析

    本文主要介紹了SpringCloudGateway的基礎(chǔ)構(gòu)建塊、工作原理以及核心原理解析,SpringCloudGateway是Spring官方基于SpringSpringBoot和ProjectReactor等技術(shù)開發(fā)的網(wǎng)關(guān),旨在為微服務(wù)架構(gòu)提供一種簡單而有效的統(tǒng)一的API路由管理方式
    2024-10-10
  • Java線程池ForkJoinPool實(shí)例解析

    Java線程池ForkJoinPool實(shí)例解析

    這篇文章主要介紹了Java線程池ForkJoinPool實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 使用MyBatis快速生成代碼的幾種方法

    使用MyBatis快速生成代碼的幾種方法

    本文主要介紹了如何使用MyBatis快速生成代碼的幾種方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-12-12

最新評(píng)論