日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

一文介紹Java編程思想--接口

 碼農(nóng)9527 2021-07-08

編程人員是最勤快的人,也是最懶惰的一群人,總是不斷地學(xué)習(xí),能夠自動(dòng)完成的絕對(duì)不會(huì)手寫。要成為合格的Java全棧工程師?請(qǐng)完全理解Java的編程思想!

Java編程思想

    接口

    interface關(guān)鍵字使抽象的概念更向前邁進(jìn)了一部。abstract關(guān)鍵字允許人們?cè)陬愔袆?chuàng)建一個(gè)或者多個(gè)沒有定義的方法--提供了接口部分,但是沒有提供相對(duì)應(yīng)的實(shí)現(xiàn),這些實(shí)現(xiàn)是由此類的繼承者創(chuàng)建的。interface這個(gè)關(guān)鍵字產(chǎn)生一個(gè)完全抽象的類,他根本就沒有提供任何具體實(shí)現(xiàn),它允許創(chuàng)建者確定方法名、參數(shù)列表和返回類型,但是沒有任何方法提高。接口只是提供了形式,而未提供任何具體實(shí)現(xiàn)。

    一個(gè)接口表示:所有實(shí)現(xiàn)了該特定接口的類看起來都像這樣。因此,任何使用某特定接口的代碼都知道可以調(diào)用該接口的哪些方法,而且僅僅需要這些。因此,接口被用來建立類與類之間的協(xié)議。

    但是,interface不僅僅是一個(gè)極度抽象的類,因?yàn)樗试S人們通過創(chuàng)建一個(gè)能夠被向上轉(zhuǎn)型為多種基類的類型,來實(shí)現(xiàn)某種類似多重繼承的特性。

    接口也可以包含域,但是這些域隱式是static和final的。

    可以在接口中顯式的將方法聲明為public的,但即使你不這么做,他們也是public的。

    抽象類和抽象方法

    建立一個(gè)通用接口的唯一理由是,不同的子類可以用不同的方式表示此接口。通用接口建立起一種基本形式,以此表示所有導(dǎo)出類的共同部分。另一種說法是將這種類稱為抽象基類,或簡(jiǎn)稱抽象類。

    如果我們只有一個(gè)像Instrument這樣的抽象類,那么該類的對(duì)象幾乎沒有任何意義。我們創(chuàng)建抽象類是希望通過這個(gè)通用接口操縱一系列類。因此,Instrument只是表示了一個(gè)接口,沒有具體的實(shí)現(xiàn)內(nèi)容;因此,創(chuàng)建一個(gè)Instrument對(duì)象沒有什么意義,并且我們可能還想阻止使用者這樣做。通過讓Instrument中的所有方都產(chǎn)生錯(cuò)誤,就可以實(shí)現(xiàn)這個(gè)目的。但是這樣做會(huì)將錯(cuò)誤信息延遲到運(yùn)行時(shí)才獲得,并且需要在客戶端進(jìn)行可靠、詳盡的測(cè)試。所以最好是在編譯時(shí)捕獲這些問題。

    為此,java提供一個(gè)叫做抽象方法的機(jī)制,這種方法是不完整的;僅有聲明而沒有方法提。下面是抽象方法聲明所采用的語(yǔ)法:

abstrac tvoid f();1復(fù)制代碼類型:[java]

    包含抽象的類叫做抽象類。如果一個(gè)類包含一個(gè)或者多個(gè)抽象方法,該類必須被限定為抽象的。

    如果一個(gè)抽象類不完整,那么當(dāng)我們?cè)噲D產(chǎn)生該類的對(duì)象時(shí),編譯器會(huì)怎樣處理呢?由于為抽象類創(chuàng)建對(duì)象是不安全的,所以我們會(huì)從編譯器那里得到一條出錯(cuò)消息。

    如果從一個(gè)抽象類繼承,并想創(chuàng)建該新類的對(duì)象,那么就必須為基類中所有抽象方法提供方法定義。如果不這么做,那么導(dǎo)出類也必須是抽象類,且編譯器將會(huì)強(qiáng)制我們用abstract關(guān)鍵字來限定這個(gè)類。

    我們也可能會(huì)創(chuàng)建一個(gè)沒有任何抽象方法的抽象類??紤]這種情況:如果有一個(gè)類,讓其包含任何abstract方法都顯得沒有實(shí)際意義,而且我們也想要阻止產(chǎn)生這個(gè)類的任何對(duì)象,那么這時(shí)這樣做就很有用了。

    創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗梢允诡惖某橄笮悦鞔_起來,并告訴用戶和編譯器打算怎樣來使用他們。抽象類還是很有用的重構(gòu)工具,因?yàn)樗麄兪沟梦覀兛梢院苋菀椎膶⒐卜椒ㄑ刂^承層次結(jié)構(gòu)向上移動(dòng)。

    通過繼承來擴(kuò)展接口

    通過繼承,可以很容易的在接口中添加新的方法聲明,還可以通過繼承在新接口中組合數(shù)個(gè)接口。這兩種情況都可以獲得新的接口。

interface Monster {  void menace();
}interface DangerousMonster extends Monster {  void destory();
}123456復(fù)制代碼類型:[java]

    Java中的多重繼承

    使用接口的核心原因:為了能夠向上轉(zhuǎn)型為多個(gè)基類型,以及由此帶來的靈活性。

    第二個(gè)原因則是和抽象基類相同:防止客戶端程序創(chuàng)建該類的對(duì)象,并確保這僅僅只建立了一個(gè)接口。

    怎么判斷使用接口還是抽象類?如果要?jiǎng)?chuàng)建不帶任何方法定義和成員變量的基類,那就應(yīng)該使用接口。事實(shí)上,如果知道某一個(gè)事物應(yīng)該成為一個(gè)基類,那么第一選擇應(yīng)是使他成為一個(gè)接口。

    適配接口

    接口最吸引人的原因之一就是允許同一個(gè)接口具有多個(gè)不同的具體實(shí)現(xiàn)。在簡(jiǎn)單的情況中,他的體現(xiàn)形式通常是接受一個(gè)接口類型的方法,而該接口的實(shí)現(xiàn)和向該方法傳遞的對(duì)象則取決于方法的使用者。

    因此,接口的一種常用方法就是策略模式,此時(shí)你編寫一個(gè)執(zhí)行某些操作的方法,而該方法將接受一個(gè)同樣是你指定的接口。你主要就是要聲明:你可以用你想要的任何對(duì)象來調(diào)用我的方法,只要你的對(duì)象遵循我的接口。

   接口中的域

    因?yàn)槟惴湃虢涌谥械娜魏斡蚨甲詣?dòng)是static和final的,所以接口就成為了一種很便捷的用來創(chuàng)建常量組的工具。但在JavaSE5之后,你就可以使用更加強(qiáng)大而靈活的enum關(guān)鍵字。

    嵌套接口

    接口可以嵌套在類或者其他接口中。

class A { interface B {   void f();
 } public class BImp implements B}

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多