摘要:接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。
接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。
1.抽象類和抽象方法抽象類,是普通的類與接口之間的一種中庸之道.
抽象方法:僅有聲明而沒有方法體.
抽象類:包含抽象方法的類.如果一個(gè)類包含一個(gè)或多個(gè)抽象方法,該類必須被限定為抽象的.
如果從一個(gè)抽象類繼承,并想創(chuàng)建該新類的對(duì)象,那么久必須為基類中的所有抽象方法提供方法定義。如果不這樣做,那么導(dǎo)出類便也是抽象的,且編譯器將會(huì)強(qiáng)制用abstract關(guān)鍵字來(lái)限定這個(gè)類.
創(chuàng)建沒有任何抽象方法的抽象類:阻止產(chǎn)生這個(gè)類的任何對(duì)象.
2.接口interface關(guān)鍵字產(chǎn)生一個(gè)完全抽象的類,它沒有提供任何具體實(shí)現(xiàn).它允許創(chuàng)建者確定方法名、參數(shù)列表和返回類型,但是沒有任何方法體(接口之提供;額形式,二尾提供任何具體實(shí)現(xiàn)).
一個(gè)接口表示:所有實(shí)現(xiàn)了該特定接口的類看起來(lái)都像這樣(接口被用來(lái)建立類與類之間的協(xié)議).
接口可以包含域,但是這些域隱式地是static和final的.
要讓一個(gè)類遵循某個(gè)特定接口(或者是一組接口),需要使用implements關(guān)鍵字.
在接口中,方法默認(rèn)是public的.當(dāng)要實(shí)現(xiàn)一個(gè)接口時(shí),接口中被定義的方法必須被定義為是public的.
3.完全解耦創(chuàng)建一個(gè)能夠根據(jù)所傳遞的參數(shù)對(duì)象的不同而具有不同行為的方法,被稱為策略設(shè)計(jì)模式.
適配器設(shè)計(jì)模式:適配器中的代碼將接受你所擁有的接口,并產(chǎn)生你所需要的接口.
將接口從具體的實(shí)現(xiàn)中解耦使得接口可以應(yīng)用于多種不同的具體實(shí)現(xiàn),因此代碼也就更具可復(fù)用性.
4.Java中的多重繼承使用接口的核心原因:為了能夠向上轉(zhuǎn)型為多個(gè)基類型(以及由此帶來(lái)的靈活性).
第二個(gè)原因:防止客戶端程序員創(chuàng)建該類的對(duì)象,并確保這僅僅是建立一個(gè)接口.
如果要?jiǎng)?chuàng)建不帶任何方法定義和成員變量的基類,那么就應(yīng)該選擇接口而不是抽象類.事實(shí)上,如果知道某事物應(yīng)該成為一個(gè)基類,那么第一選擇應(yīng)該是使它成為一個(gè)接口.
5.通過(guò)繼承來(lái)擴(kuò)展接口通過(guò)繼承,可以很容易地在接口中添加新的方法聲明,還可以通過(guò)繼承在新接口中組合數(shù)個(gè)接口,這兩種情況都可以獲得新的接口.
一般情況下,只可以將extends用于單一類,但是可以引用多個(gè)基類接口,只需用逗號(hào)將接口名一一隔開即可.
在打算組合的不同接口中使用相同的方法名通常會(huì)造成代碼可讀性的混亂,請(qǐng)盡量避免這種情況.
6.適配接口接口允許同一個(gè)接口具有多個(gè)不同的具體實(shí)現(xiàn).在簡(jiǎn)單的情況中,他的體現(xiàn)形式通常是一個(gè)接受接口類型的方法,而該接口的實(shí)現(xiàn)和向該方法傳遞的對(duì)象則取決于方法的使用者.
7.接口中的域在Java SE5之前,在的接口中定義域(static&final)是產(chǎn)生于enum具有相同效果的類型的唯一途徑.
在接口中定義的域不能是"空f(shuō)inal",但是可以被非常量表達(dá)式初始化.
域不是接口的一部分,它們的值被存儲(chǔ)在該接口的靜態(tài)存儲(chǔ)區(qū)域內(nèi).
8.嵌套接口接口可以嵌套類或其他接口中.
嵌套在另一個(gè)接口中的接口自動(dòng)就是public的,而不能聲明為private的.
當(dāng)實(shí)現(xiàn)某個(gè)接口時(shí),并不需要實(shí)現(xiàn)嵌套在其內(nèi)部的任何接口.
private接口不能再定義它的類之外被實(shí)現(xiàn).
9.接口與工廠接口是實(shí)現(xiàn)多重繼承的途徑,而生成遵循某個(gè)接口的對(duì)象的典型方式就是工廠方法設(shè)計(jì)模式.
與直接調(diào)用構(gòu)造器不同,在工廠對(duì)象上調(diào)用的是創(chuàng)建方法,而該工廠對(duì)象將生成接口的某個(gè)實(shí)現(xiàn)的對(duì)象.
理論上,通過(guò)這種方式,我們的代碼將完全與接口的實(shí)現(xiàn)分離,這就使得我們可以透明地將某個(gè)實(shí)現(xiàn)替換為另一個(gè)實(shí)現(xiàn).
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/71598.html
摘要:抽象類和抽象方法抽象方法這種方法是不完整的,僅有聲明而沒有方法。創(chuàng)建抽象類和抽象方法非常有用,因?yàn)樗麄兛梢允估鄣某橄笮悦鞔_起來(lái),并告訴用戶和編譯器打算怎樣來(lái)使用它們。接口用于建立類于類之間的協(xié)議。與抽象類相同,防止客戶端程序員創(chuàng)建該類對(duì)象。 點(diǎn)擊進(jìn)入我的博客 接口和內(nèi)部類為我們提供了一種將接口與實(shí)現(xiàn)分離的更加結(jié)構(gòu)化的方法。 9.1抽象類和抽象方法 抽象方法:這種方法是不完整的,僅有...
摘要:具體而言就是高層模塊不依賴于底層模塊,二者都同依賴于抽象抽象不依賴于具體,具體依賴于抽象。 9.接口 9.1 抽象類和抽象方法 抽象類:包含抽象方法的類,自身無(wú)法實(shí)例化 抽象方法:僅有聲明,沒有方法體 關(guān)系:抽象方法是抽象類的充分不必要條件,因此抽象類中允許方法實(shí)現(xiàn)和抽象方法同時(shí)存在 語(yǔ)法 // 抽象類 abstract class ClassName{} // 抽象方法 ab...
摘要:大家好,上一篇小樂給大家講述了樂字節(jié)核心特性表達(dá)式,點(diǎn)擊回顧。接下來(lái)繼續(xù)核心特性之函數(shù)式接口。感謝大家欣賞小樂帶來(lái)的核心特性之函數(shù)式接口,接下來(lái)還會(huì)更多核心技術(shù)講解,請(qǐng)關(guān)注樂字節(jié)如需要視頻課程,請(qǐng)搜索樂字節(jié)騰訊課堂 大家好,上一篇小樂給大家講述了《樂字節(jié)-Java8核心特性-Lambda表達(dá)式》,點(diǎn)擊回顧。接下來(lái)繼續(xù):Java8核心特性之函數(shù)式接口。 什么時(shí)候可以使用Lambda?通常...
摘要:于是抽時(shí)間看了看以后各個(gè)版本的特性,做了一個(gè)總結(jié)。年和公開版本發(fā)布,取名為。此后對(duì)應(yīng)版本就是,。發(fā)布,是一個(gè)重大版本更新。在此之后,就是每六個(gè)月發(fā)布一次新版本。以上和參考資料聊了一些關(guān)于的歷史,下面我們看看各個(gè)版本有那些新特性。 【這是 ZY 第 11 篇原創(chuàng)技術(shù)文章】 某天在網(wǎng)上閑逛,突然看到有篇介紹 Java 11 新特性的文章,頓時(shí)心里一驚,畢竟我對(duì)于 Java 的版本認(rèn)識(shí)...
摘要:的核心變化就是引入了一種新的編程組件,也就是模塊,按照的說(shuō)法,它是一個(gè)可命名的自描述的代碼和數(shù)據(jù)集合。宣布會(huì)按照每六個(gè)月一次的節(jié)奏進(jìn)行發(fā)布,意味著是最后一次特性驅(qū)動(dòng)的版本發(fā)布,這反映出了目前管理的特點(diǎn)。 Java SE 9.0于2017年9月21日發(fā)布。JDK 9的核心變化就是引入了一種新的Java編程組件,也就是模塊,按照Oracle的說(shuō)法,它是一個(gè)可命名的、自描述的代碼和數(shù)據(jù)集合。...
閱讀 1509·2019-08-30 15:55
閱讀 1746·2019-08-26 10:21
閱讀 3510·2019-08-23 18:28
閱讀 3437·2019-08-23 15:38
閱讀 837·2019-08-23 15:24
閱讀 2199·2019-08-23 13:59
閱讀 832·2019-08-23 11:31
閱讀 2917·2019-08-23 10:53