最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別

 更新時(shí)間:2016年11月04日 09:41:35   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

Java接口(Interface),是一系列方法的聲明,是一些方法特征的集合,一個(gè)接口只有方法的特征沒(méi)有方法的實(shí)現(xiàn),因此這些方法可以在不同的地方被不同的類實(shí)現(xiàn),而這些實(shí)現(xiàn)可以具有不同的行為(功能)。

一、接口含義:

1.Java接口,Java語(yǔ)言中存在的結(jié)構(gòu),有特定的語(yǔ)法和結(jié)構(gòu);

2.一個(gè)類所具有的方法的特征集合,是一種邏輯上的抽象。

前者叫做“Java接口”,后者叫做“接口”。

Java接口本身沒(méi)有任何實(shí)現(xiàn),因?yàn)镴ava接口不涉及表象,而只描述public行為,所以Java接口比Java抽象類更抽象化。

Java接口的方法只能是抽象的和公開(kāi)的,Java接口不能有構(gòu)造器,Java接口可以有public,靜態(tài)的和final屬性。

二、為何用接口Java是一種單繼承的語(yǔ)言,若要給已有父類的具體類增加新功能,在OCP原則下,解決是給它的父類加父類,或者給它父類的父類加父類,直到移動(dòng)到類等級(jí)結(jié)構(gòu)的最頂端。這樣一來(lái),對(duì)一個(gè)具體類的可插入性的設(shè)計(jì),就變成了對(duì)整個(gè)等級(jí)結(jié)構(gòu)中所有類的修改。

當(dāng)有了接口,以上例子中,就不需要維護(hù)整個(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)聯(lián)以及方法調(diào)用上的可插入性,軟件系統(tǒng)的規(guī)模越大,生命周期越長(zhǎng),接口使得軟件系統(tǒng)的靈活性和可擴(kuò)展性,可插入性方面得到保證。

正是有了接口,使得Java單繼承性有了新的擴(kuò)展的可能(變向地實(shí)現(xiàn)多繼承);三.類型等級(jí)結(jié)構(gòu)Java接口(以及抽象類)一般用來(lái)作為一個(gè)類型的等級(jí)結(jié)構(gòu)的起點(diǎn)。

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

四、Java接口分類

1、普通接口(含有方法定義)public interface ActionListener{public abstract void actionPerformed(ActionEvent event);}

2、標(biāo)識(shí)接口(無(wú)任何方法和屬性定義)標(biāo)識(shí)接口是沒(méi)有任何方法和屬性的接口.標(biāo)識(shí)接口不對(duì)實(shí)現(xiàn)它的類有任何語(yǔ)義上的要求,它僅僅表明實(shí)現(xiàn)它的類屬于一個(gè)特定的類型。

public interface Serializable{};3、常量接口是指用Java接口來(lái)聲明一些常量,然后由實(shí)現(xiàn)這個(gè)接口的類使用這些常量。

public interface AppConstants{public static final DATA_SOURCE_NAME="test";public static final USER_NAME="test";public static final PASSWORD="test";}

五、接口的特點(diǎn)

1、Java接口中的成員變量默認(rèn)都是public,static,final類型的(都可省略),必須被顯示初始化,即接口中的成員變量為常量(大寫(xiě),單詞之間用"_"分隔)

2、Java接口中的方法默認(rèn)都是public,abstract類型的(都可省略),沒(méi)有方法體,不能被實(shí)例化

3、Java接口中只能包含public,static,final類型的成員變量和public,abstract類型的成員方法

4、接口中沒(méi)有構(gòu)造方法,不能被實(shí)例化

5、一個(gè)接口不能實(shí)現(xiàn)(implements)另一個(gè)接口,但它可以繼承多個(gè)其它的接口

6、Java接口必須通過(guò)類來(lái)實(shí)現(xiàn)它的抽象方法

7、當(dāng)類實(shí)現(xiàn)了某個(gè)Java接口時(shí),它必須實(shí)現(xiàn)接口中的所有抽象方法,否則這個(gè)類必須聲明為抽象類

8、不允許創(chuàng)建接口的實(shí)例(實(shí)例化),但允許定義接口類型的引用變量,該引用變量引用實(shí)現(xiàn)了這個(gè)接口的類的實(shí)例

9、一個(gè)類只能繼承一個(gè)直接的父類,但可以實(shí)現(xiàn)多個(gè)接口,間接的實(shí)現(xiàn)了多繼承.

六.Java接口和Java抽象類區(qū)別面向?qū)ο笤O(shè)計(jì)的重點(diǎn)在于抽象。抽象類與接口都位于繼承樹(shù)的上層。

相同點(diǎn):

1、代表系統(tǒng)的抽象層,當(dāng)一個(gè)系統(tǒng)使用一顆繼承樹(shù)上的類時(shí),應(yīng)該盡量把引用變量聲明為繼承樹(shù)的上層抽象類型,這樣可以提高兩個(gè)系統(tǒng)之間的送耦合2、都不能被實(shí)例化3、都包含抽象方法,這些抽象方法用于描述系統(tǒng)能提供哪些服務(wù),但不包含方法體不同點(diǎn):

1、最大的一個(gè)區(qū)別,就在于Java抽象類可以提供某些方法的部分實(shí)現(xiàn),而Java接口不可以;這大概就是Java抽象類唯一的優(yōu)點(diǎn)吧,但這個(gè)優(yōu)點(diǎn)非常有用。

可以向抽象類里加入一個(gè)新的具體方法,所有的子類都自動(dòng)得到這個(gè)方法;但Java接口里加入一個(gè) 新方法,所有實(shí)現(xiàn)這個(gè)接口的類就無(wú)法成功通過(guò)編譯,必需手動(dòng)給每個(gè)實(shí)現(xiàn)了該接口的類加上該方法的實(shí)現(xiàn);

 2、抽象類的實(shí)現(xiàn)只能由子類給出,也即該實(shí)現(xiàn)只能在抽象類定義的繼承的等級(jí)結(jié)構(gòu)中;所以抽象類作為類型定義工具的效能大打折扣。

Java接口,任何一個(gè)實(shí)現(xiàn)了一個(gè)Java接口所規(guī)定的方法的類都可以具有這個(gè)接口的類型,而一個(gè)類可以實(shí)現(xiàn)任意多個(gè)Java接口,從而這個(gè)類就有了多種類型。

以上看出:Java接口是定義混合類型的理想工具,混合類表明一個(gè)類不僅僅具有某個(gè)主類型的行為,而且具有其他的次要行為。

3、結(jié)合1、2點(diǎn)中抽象類和Java接口的各自優(yōu)勢(shì),具精典的設(shè)計(jì)模式就出來(lái)了:

聲明類型的工作仍然由Java接口承擔(dān),但是同時(shí)給出一個(gè)Java 抽象類,且實(shí)現(xiàn)了這個(gè)接口,而其他同屬于這個(gè)抽象類型的具體類可以選擇實(shí)現(xiàn)這個(gè)Java接口,也可以選擇繼承這個(gè)抽象類,也就是說(shuō)在層次結(jié)構(gòu)中,Java 接口在最上面,然后緊跟著抽象類,這下兩個(gè)的最大優(yōu)點(diǎn)都能發(fā)揮到極至了。這個(gè)模式就是“缺省適配模式”。

在Java語(yǔ)言API中用了這種模式,而且全都遵循一定的命名規(guī)范:Abstract +接口名。

七.使用接口和抽象類的總體原則:

1、用接口作為系統(tǒng)與外界交互的窗口站在外界使用者(另一個(gè)系統(tǒng))的角度,接口向使用者承諾系統(tǒng)能提供哪些服務(wù),站在系統(tǒng)本身的角度,接口制定系統(tǒng)必須實(shí)現(xiàn)哪些服務(wù),接口是系統(tǒng)中最高層次的抽象類型.通過(guò)接口交互可以提高兩個(gè)系統(tǒng)之間的送耦合系統(tǒng)A通過(guò)系統(tǒng)B進(jìn)行交互,是指系統(tǒng)A訪問(wèn)系統(tǒng)B時(shí),把引用變量聲明為系統(tǒng)B中的接口類型,該引用變量引用系統(tǒng)B中接口的實(shí)現(xiàn)類的實(shí)例。

public interface B   {   }

public class C implements B   {   }

public class A   {  B a = new C();  }

2、Java接口本身必須非常穩(wěn)定,Java接口一旦制定,就不允許隨遇更加,否則對(duì)外面使用者及系統(tǒng)本身造成影響3、用抽象類來(lái)定制系統(tǒng)中的擴(kuò)展點(diǎn),抽象類來(lái)完成部分實(shí)現(xiàn),還要一些功能通過(guò)它的子類來(lái)實(shí)現(xiàn)

以上這篇細(xì)數(shù)Java接口的概念、分類及與抽象類的區(qū)別就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • break和continue的作用和區(qū)別解析(案例分析)

    break和continue的作用和區(qū)別解析(案例分析)

    break和continue都是用來(lái)控制循環(huán)結(jié)構(gòu)的,主要作用是停止循環(huán),這篇文章主要介紹了break和continue的作用和區(qū)別,需要的朋友可以參考下
    2023-03-03
  • 解決IDEA 2020.1版本 maven Test命令出現(xiàn)導(dǎo)包錯(cuò)誤的問(wèn)題

    解決IDEA 2020.1版本 maven Test命令出現(xiàn)導(dǎo)包錯(cuò)誤的問(wèn)題

    這篇文章主要介紹了IDEA 2020.1版本 maven Test命令出現(xiàn)導(dǎo)包錯(cuò)誤的問(wèn)題及解決方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • java 二進(jìn)制數(shù)據(jù)與16進(jìn)制字符串相互轉(zhuǎn)化方法

    java 二進(jìn)制數(shù)據(jù)與16進(jìn)制字符串相互轉(zhuǎn)化方法

    今天小編就為大家分享一篇java 二進(jìn)制數(shù)據(jù)與16進(jìn)制字符串相互轉(zhuǎn)化方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Java中上傳圖片壓縮處理的方法示例

    Java中上傳圖片壓縮處理的方法示例

    本篇文章主要介紹了Java中圖片壓縮處理的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • java8中Map的一些騷操作總結(jié)

    java8中Map的一些騷操作總結(jié)

    這篇文章主要給大家介紹了關(guān)于java8中Map的一些騷操作,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼

    這篇文章主要介紹了使用Spring?Boot?2.x構(gòu)建Web服務(wù)的詳細(xì)代碼,主要基于JWT的身份認(rèn)證,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Spring Cache自定義緩存key和過(guò)期時(shí)間的實(shí)現(xiàn)代碼

    Spring Cache自定義緩存key和過(guò)期時(shí)間的實(shí)現(xiàn)代碼

    使用 Redis的客戶端 Spring Cache時(shí),會(huì)發(fā)現(xiàn)生成 key中會(huì)多出一個(gè)冒號(hào),而且有一個(gè)空節(jié)點(diǎn)的存在,查看源碼可知,這是因?yàn)?nbsp;Spring Cache默認(rèn)生成key的策略就是通過(guò)兩個(gè)冒號(hào)來(lái)拼接,本文給大家介紹了Spring Cache自定義緩存key和過(guò)期時(shí)間的實(shí)現(xiàn),需要的朋友可以參考下
    2024-05-05
  • MyBatis深入分析數(shù)據(jù)庫(kù)交互與關(guān)系映射

    MyBatis深入分析數(shù)據(jù)庫(kù)交互與關(guān)系映射

    這篇文章主要介紹了MyBatis中的數(shù)據(jù)庫(kù)交互與關(guān)系映射,MyBatis是一款優(yōu)秀的持久層框架,它支持定制化SQL、存儲(chǔ)過(guò)程以及高級(jí)映射,MyBatis避免了幾乎所有的JDBC代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集,需要的朋友可以參考下
    2024-05-05
  • 新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)

    新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)

    說(shuō)到多態(tài),一定離不開(kāi)其它兩大特性:封裝和繼承,下面這篇文章主要給大家介紹了關(guān)于新手小白入門必學(xué)JAVA面向?qū)ο笾鄳B(tài)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Java?8函數(shù)式接口之Consumer用法示例詳解

    Java?8函數(shù)式接口之Consumer用法示例詳解

    這篇文章主要為大家介紹了Java?8函數(shù)式接口之Consumer用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07

最新評(píng)論

兴海县| 绥宁县| 沙雅县| 比如县| 治县。| 唐海县| 美姑县| 灵丘县| 饶平县| 大荔县| 依兰县| 马龙县| 文山县| 富裕县| 黑龙江省| 焉耆| 双江| 永安市| 金阳县| 文登市| 民县| 芒康县| 萨迦县| 施秉县| 乐都县| 习水县| 洛浦县| 泸溪县| 琼结县| 定结县| 扶沟县| 济南市| 株洲县| 新龙县| 思茅市| 武穴市| 富顺县| 双柏县| 昆明市| 濮阳县| 阿勒泰市|