您好,歡迎來到賦能網(wǎng)!

java中接口可以繼承抽象類嗎?抽象類和接口有什么區(qū)別?

賦能網(wǎng) 2023-05-09 79

java接口在開發(fā)中起到重要的作用,并且Java語言中允許有一種叫做抽象方法的東西,它只是一個名字沒有具體的實(shí)現(xiàn),那java中接口可以繼承抽象類嗎?下面來我們就來給大家講解一下。

接口可以繼承多接口,但不可以繼承抽象類。

抽象類和接口有什么區(qū)別?

1、語法層面上的區(qū)別:

1)抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在public abstract 方法;

2)抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是public static final類型的;

3)接口中不能含有靜態(tài)代碼塊以及靜態(tài)方法,而抽象類可以有靜態(tài)代碼塊和靜態(tài)方法;

4) 一個類只能繼承一個抽象類,而一個類卻可以實(shí)現(xiàn)多個接口。

2、設(shè)計層面上的區(qū)別:

1) 抽象類是對一種事物的抽象,即對類抽象,而接口是對行為的抽象。抽象類是對整個類整體進(jìn)行抽象,包括屬性、行為,但是接口卻是對類局部(行為)進(jìn)行抽象。舉個簡單的例子,飛機(jī)和鳥是不同類的事物,但是它們都有一個共性,就是都會飛。那么在設(shè)計的時候,可以將飛機(jī)設(shè)計為一個類Airplane,將鳥設(shè)計為一個類Bird,但是不能將 飛行 這個特性也設(shè)計為類,因此它只是一個行為特性,并不是對一類事物的抽象描述。

此時可以將 飛行 設(shè)計為一個接口Fly,包含方法fly( ),然后Airplane和Bird分別根據(jù)自己的需要實(shí)現(xiàn)Fly這個接口。然后至于有不同種類的飛機(jī),比如戰(zhàn)斗機(jī)、民用飛機(jī)等直接繼承Airplane即可,對于鳥也是類似的,不同種類的鳥直接繼承Bird類即可。從這里可以看出,繼承是一個 "是不是"的關(guān)系,而 接口 實(shí)現(xiàn)則是 "有沒有"的關(guān)系。如果一個類繼承了某個抽象類,則子類必定是抽象類的種類,而接口實(shí)現(xiàn)則是有沒有、具備不具備的關(guān)系,比如鳥是否能飛(或者是否具備飛行這個特點(diǎn)),能飛行則可以實(shí)現(xiàn)這個接口,不能飛行就不實(shí)現(xiàn)這個接口。

2)設(shè)計層面不同,抽象類作為很多子類的父類,它是一種模板式設(shè)計。而接口是一種行為規(guī)范,它是一種輻射式設(shè)計。什么是模板式設(shè)計?最簡單例子,大家都用過ppt里面的模板,如果用模板A設(shè)計了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它們的公共部分需要改動,則只需要改動模板A就可以了,不需要重新對ppt B和ppt C進(jìn)行改動。

而輻射式設(shè)計,比如某個電梯都裝了某種報警器,一旦要更新報警器,就必須全部更新。也就是說對于抽象類,如果需要添加新的方法,可以直接在抽象類中添加具體的實(shí)現(xiàn),子類可以不進(jìn)行變更;而對于接口則不行,如果接口進(jìn)行了變更,則所有實(shí)現(xiàn)這個接口的類都必須進(jìn)行相應(yīng)的改動。

總之抽象類是一種特殊的類,抽象類可以實(shí)現(xiàn)單接口,可以繼承普通類,但不可以繼承接口,最后大家如果想要了解更多java初識知識,敬請關(guān)注賦能網(wǎng)。


本文鏈接:

本文章“java中接口可以繼承抽象類嗎?抽象類和接口有什么區(qū)別?”已幫助 79 人

免責(zé)聲明:本信息由用戶發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識產(chǎn)權(quán)侵權(quán)的法律責(zé)任!

本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢熱線:4008-569-579

如果本頁不是您要找的課程,您也可以百度查找一下: