溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java中接口與抽象類的區(qū)別

發(fā)布時(shí)間:2020-07-04 13:39:07 來源:網(wǎng)絡(luò) 閱讀:1192 作者:xiezh10 欄目:編程語言

一、抽象類

在Java中,被關(guān)鍵字abstract修飾的類稱為抽象類;被abstract修飾的方法稱為抽象方法,抽象方法只有方法聲明沒有方法體。
抽象類有以下幾個(gè)特點(diǎn):
1、抽象類不能被實(shí)例化,只能被繼承。
2、包含抽象方法的類一定是抽象類,但抽象類不一定包含抽象方法(抽象類可以包含普通方法)。
3、抽象方法的權(quán)限修飾符只能為public或者protected,默認(rèn)情況下為public。
4、一個(gè)類繼承于一個(gè)抽象類,則子類必須實(shí)現(xiàn)抽象類的抽象方法,如果子類沒有實(shí)現(xiàn)父類的抽象方法,那子類必須定義為抽象類。
5、抽象類可以包含屬性、方法、構(gòu)造方法,但構(gòu)造方法不能用來實(shí)例化對(duì)象,只能被子類調(diào)用。

二、接口

接口可以看成是一種特殊的類,只能用interface關(guān)鍵字修飾。接口是提供給別人調(diào)用的。Java中的接口具有以下幾個(gè)特點(diǎn):
1、接口中可以包含變量和方法,變量被隱式指定為public static final,方法被隱式指定為public abstract(JDK 1.8之前);
2、接口支持多繼承,即一個(gè)接口可以繼承(extends)多個(gè)接口,間接解決了Java中類不能多繼承的問題;
3、一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口,一個(gè)類實(shí)現(xiàn)某個(gè)接口則必須實(shí)現(xiàn)該接口中的抽象方法,否則該類必須被定義為抽象類;
4、JDK 1.8中對(duì)接口新增了兩個(gè)特性:
(1)默認(rèn)方法(default method):JDK 1.8允許給接口添加非抽象的方法實(shí)現(xiàn),但必須使用default關(guān)鍵字修飾;定義了default的方法可以不被實(shí)現(xiàn)子類所實(shí)現(xiàn),但只能被實(shí)現(xiàn)子類的對(duì)象調(diào)用;如果子類實(shí)現(xiàn)了多個(gè)接口,并且這些接口包含一樣的默認(rèn)方法,則子類必須重寫默認(rèn)方法。
(2)靜態(tài)方法(static method):JDK 1.8中允許使用static關(guān)鍵字修飾一個(gè)方法,并提供實(shí)現(xiàn),稱為接口靜態(tài)方法。接口靜態(tài)方法只能通過接口調(diào)用(接口名.靜態(tài)方法名)。
5、在JDK 1.9中,再次對(duì)接口進(jìn)行了增強(qiáng),可以實(shí)現(xiàn)private method和private static method。因?yàn)镴DK 1.8中可以對(duì)接口中的方法進(jìn)行實(shí)現(xiàn),那么當(dāng)我們不希望實(shí)現(xiàn)的方法暴露給外部時(shí),則可以將方法定義為private。

三、接口與抽象類的區(qū)別

1、抽象類中可以包含普通方法,但接口中只能包含public abstract方法(JDK 1.8之前);
2、抽象類中的成員變量沒有訪問權(quán)限的限制,但接口中的變量只能被public static final修飾;
3、一個(gè)接口可以繼承多個(gè)接口,但一個(gè)類只能有一個(gè)父類,類可以實(shí)現(xiàn)多個(gè)接口;
4、抽象類是對(duì)一類事物的抽象,接口則是對(duì)行為的抽象。一個(gè)類繼承一個(gè)抽象類代表“是不是”的關(guān)系,而一個(gè)類實(shí)現(xiàn)一個(gè)接口則表示“有沒有”的關(guān)系。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI