摘要:一抽象類與接口參數(shù)抽象類接口默認(rèn)的方法實(shí)現(xiàn)它可以有默認(rèn)的方法實(shí)現(xiàn)接口完全是抽象的。它根本不存在方法的實(shí)現(xiàn)實(shí)現(xiàn)子類使用關(guān)鍵字來(lái)繼承抽象類。抽象類是對(duì)整個(gè)類整體進(jìn)行抽象,包括屬性行為,但是接口卻是對(duì)類局部行為進(jìn)行抽象。
一:抽象類與接口
參數(shù) | 抽象類 | 接口 |
---|---|---|
默認(rèn)的方法實(shí)現(xiàn) | 它可以有默認(rèn)的方法實(shí)現(xiàn) | 接口完全是抽象的。它根本不存在方法的實(shí)現(xiàn) |
實(shí)現(xiàn) | 子類使用extends關(guān)鍵字來(lái)繼承抽象類。如果子類不是抽象類的話,它需要提供抽象類中所有聲明的方法的實(shí)現(xiàn)。 | 子類使用關(guān)鍵字implements來(lái)實(shí)現(xiàn)接口。它需要提供接口中所有聲明的方法的實(shí)現(xiàn) |
構(gòu)造器 | 抽象類可以有構(gòu)造器 | 接口不能有構(gòu)造器 |
與正常Java類的區(qū)別 | 除了你不能實(shí)例化抽象類之外,它和普通Java類沒(méi)有任何區(qū)別 | 接口是完全不同的類型 |
訪問(wèn)修飾符 | 抽象方法可以有public、protected和default這些修飾符 | 接口方法默認(rèn)修飾符是public。你不可以使用其它修飾符。 |
main方法 | 抽象方法可以有main方法并且我們可以運(yùn)行它 | 接口沒(méi)有main方法,因此我們不能運(yùn)行它。 |
多繼承 | 抽象方法可以繼承一個(gè)類和實(shí)現(xiàn)多個(gè)接口 | 接口只可以繼承一個(gè)或多個(gè)其它接口 |
速度 | 它比接口速度要快 | 接口是稍微有點(diǎn)慢的,因?yàn)樗枰獣r(shí)間去尋找在類中實(shí)現(xiàn)的方法。 |
添加新方法 | 如果你往抽象類中添加新的方法,你可以給它提供默認(rèn)的實(shí)現(xiàn)。因此你不需要改變你現(xiàn)在的代碼。 | 如果你往接口中添加方法,那么你必須改變實(shí)現(xiàn)該接口的類。 |
面試中的相關(guān)的問(wèn)題:
抽象類和接口之間的區(qū)別?
什么時(shí)候創(chuàng)建抽象類?什么時(shí)候創(chuàng)建接口?
設(shè)計(jì)框架時(shí)該如何選擇?
不錯(cuò)的文章:
https://juejin.im/entry/59fa7...
抽象類是對(duì)一種事物的抽象,即對(duì)類抽象,而接口是對(duì)行為的抽象。抽象類是對(duì)整個(gè)類整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對(duì)類局部(行為)進(jìn)行抽象。舉個(gè)簡(jiǎn)單的例子,飛機(jī)和鳥(niǎo)是不同類的事物,但是它們都有一個(gè)共性,就是都會(huì)飛。那么在設(shè)計(jì)的時(shí)候,可以將飛機(jī)設(shè)計(jì)為一個(gè)類Airplane,將鳥(niǎo)設(shè)計(jì)為一個(gè)類Bird,但是不能將 飛行 這個(gè)特性也設(shè)計(jì)為類,因此它只是一個(gè)行為特性,并不是對(duì)一類事物的抽象描述。此時(shí)可以將 飛行 設(shè)計(jì)為一個(gè)接口Fly,包含方法fly( ),然后Airplane和Bird分別根據(jù)自己的需要實(shí)現(xiàn)Fly這個(gè)接口。然后至于有不同種類的飛機(jī),比如戰(zhàn)斗機(jī)、民用飛機(jī)等直接繼承Airplane即可,對(duì)于鳥(niǎo)也是類似的,不同種類的鳥(niǎo)直接繼承Bird類即可。從這里可以看出,繼承是一個(gè) "是不是"的關(guān)系,而 接口 實(shí)現(xiàn)則是 "有沒(méi)有"的關(guān)系。如果一個(gè)類繼承了某個(gè)抽象類,則子類必定是抽象類的種類,而接口實(shí)現(xiàn)則是有沒(méi)有、具備不具備的關(guān)系,比如鳥(niǎo)是否能飛(或者是否具備飛行這個(gè)特點(diǎn)),能飛行則可以實(shí)現(xiàn)這個(gè)接口,不能飛行就不實(shí)現(xiàn)這個(gè)接口。
二:內(nèi)部類內(nèi)部類,主要是設(shè)計(jì)出來(lái)用來(lái)解決java中所‘缺少’的,多重繼承的概念的。
至于細(xì)節(jié)等以后再回過(guò)頭來(lái)看,現(xiàn)在沒(méi)有實(shí)際應(yīng)用場(chǎng)景談也只能是扯概念。
三:string類,array類文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/77677.html
摘要:操作之連接以及簡(jiǎn)單操作下載對(duì)應(yīng)的驅(qū)動(dòng)包下載創(chuàng)建一個(gè)連接類連接主機(jī)地址端口號(hào)登錄密碼連接服務(wù)器權(quán)限認(rèn)證連接完成會(huì)返回緩存鏈接錯(cuò)誤查詢所有中的查詢所有的為通配符清除所有的中的是清除所有的的命令如果清理完成,會(huì)返回完整的代碼聲明對(duì)象測(cè)試地址端口密 Java操作Redis之連接以及簡(jiǎn)單操作 1.下載對(duì)應(yīng)的驅(qū)動(dòng)包 下載 jedis.jar :https://mvnrepository.com/a...
摘要:,用于調(diào)用垃圾收集器,在調(diào)用時(shí),垃圾收集器將運(yùn)行以回收未使用的內(nèi)存空間。然而調(diào)用附帶一個(gè)免責(zé)聲明,無(wú)法保證對(duì)垃圾收集器的調(diào)用。所以并不能說(shuō)是完美主動(dòng)進(jìn)行了垃圾回收。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對(duì)JAVA一些基礎(chǔ)知識(shí)點(diǎn)進(jìn)行講解,為平時(shí)歸納所總結(jié),不管是剛接觸JAVA開(kāi)發(fā)菜鳥(niǎo)還是業(yè)界資深人士,都希...
摘要:是一個(gè)由寫(xiě)的存儲(chǔ)系統(tǒng)。是一個(gè)開(kāi)源的使用語(yǔ)言編寫(xiě)遵守協(xié)議支持網(wǎng)絡(luò)可基于內(nèi)存亦可持久化的日志型數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹悼梢允亲址A斜砑虾陀行蚣系阮愋汀? REmote DIctionary Server(Redis) 是一個(gè)由Salvatore Sanfilippo寫(xiě)的key-value存儲(chǔ)系統(tǒng)。Redis是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫(xiě)、遵...
摘要:是一個(gè)由寫(xiě)的存儲(chǔ)系統(tǒng)。是一個(gè)開(kāi)源的使用語(yǔ)言編寫(xiě)遵守協(xié)議支持網(wǎng)絡(luò)可基于內(nèi)存亦可持久化的日志型數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的。它通常被稱為數(shù)據(jù)結(jié)構(gòu)服務(wù)器,因?yàn)橹悼梢允亲址A斜砑虾陀行蚣系阮愋汀? REmote DIctionary Server(Redis) 是一個(gè)由Salvatore Sanfilippo寫(xiě)的key-value存儲(chǔ)系統(tǒng)。Redis是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫(xiě)、遵...
閱讀 1098·2021-11-15 18:00
閱讀 2813·2021-09-22 15:18
閱讀 1974·2021-09-04 16:45
閱讀 756·2019-08-30 15:55
閱讀 3867·2019-08-30 13:10
閱讀 1343·2019-08-30 11:06
閱讀 1992·2019-08-29 12:51
閱讀 2300·2019-08-26 13:55