HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    類和接口的區(qū)別(java類和接口的區(qū)別)

    發(fā)布時(shí)間:2023-03-12 10:09:29     稿源: 創(chuàng)意嶺    閱讀: 104        問(wèn)大家

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于類和接口的區(qū)別的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    ChatGPT國(guó)內(nèi)免費(fèi)在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端,官網(wǎng):https://ai.de1919.com

    本文目錄:

    類和接口的區(qū)別(java類和接口的區(qū)別)

    一、c#接口與類的區(qū)別!

    接口與類不同點(diǎn):

    1. 不能直接實(shí)例化接口,

    2. 接口不包含方法的實(shí)現(xiàn),

    3. 接口、類和結(jié)構(gòu)可以從多個(gè)接口繼承,

    4. 但是C#只支持但繼承:類只能從一個(gè)基類繼承實(shí)現(xiàn)。

    接口與類相同點(diǎn):

    1. 接口、類和結(jié)構(gòu)可以從多個(gè)接口繼承,

    2. 接口類似于抽象基類:繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員,

    3. 接口可以包含事件、索引器、方法和屬性,

    4. 一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。

    二、抽象類和接口的區(qū)別是什么?

    抽象類和接口的主要區(qū)別是,定義不同、方法不同、成員變量不同,具體如下:

    一、定義不同

    1、抽象類

    抽象類表示該類中可能已經(jīng)有一些方法的具體定義。

    2、接口

    接口僅僅只能定義各個(gè)方法的界面(方法名,參數(shù)列表,返回類型),并不關(guān)心具體細(xì)節(jié)。

    二、方法不同

    1、抽象類

    抽象類當(dāng)中可以存在非抽象的方法。

    2、接口

    接口里面的方法只是一個(gè)聲明必須用public來(lái)修飾沒(méi)有具體實(shí)現(xiàn)的方法。

    三、成員變量不同

    1、抽象類

    抽象類中的成員變量可以被不同的修飾符來(lái)修飾。

    2、接口

    接口中的成員變量默認(rèn)的都是靜態(tài)常量。

    以上內(nèi)容參考 百度百科-抽象類

    三、C#中的接口和類有什么異同?

    實(shí)在看不下去國(guó)內(nèi)那些裝X的大佬程序員了。別人一問(wèn)接口和類的區(qū)別聯(lián)系,竄上來(lái)就扯什么public,什么屬性索引,什么誰(shuí)能繼承誰(shuí),誰(shuí)不能繼承誰(shuí)的,咋地,我還要畫張地圖去造迷宮呀。

    看到我的回答,我覺(jué)得很多入門的程序員都能走出這個(gè)邊問(wèn)邊記邊理解,最后發(fā)現(xiàn)還是不知所云的怪圈。

    總體來(lái)說(shuō),有了類,才有了接口,有了接口才有了抽象類,不要懷疑這個(gè)順序,沒(méi)錯(cuò),和你在網(wǎng)上看到的都不一樣,很不理解吧。看完回答,你或許發(fā)現(xiàn),這樣理解反而好很多。

    首先是繼承,類是單一繼承的,這個(gè)應(yīng)該都有百度看到過(guò),但是這句話是個(gè)坑,單一繼承只是從子類的角度去說(shuō)的。因?yàn)橐粋€(gè)子類只能有一個(gè)父類,但是一個(gè)父類是可以有很多個(gè)子類的。

    言歸正傳,抽象類和類在繼承上是完全沒(méi)有區(qū)別的,不要被abstract關(guān)鍵字迷惑,這個(gè)東西只是對(duì)子成員進(jìn)行一個(gè)限制作用的。奧,補(bǔ)充一點(diǎn)就是抽象類不能被實(shí)例化(算是繼承層面唯一用到abstract的一點(diǎn)),這個(gè)可以作為本能認(rèn)知,你說(shuō)我都這么抽象了,你還去實(shí)現(xiàn)我,阿拉丁呀。

    接著是接口,接口的繼承關(guān)系就比較好理解了,一個(gè)類可以繼承多個(gè)接口,接口可以繼承多個(gè)接口,抽象類也可以繼承多個(gè)接口,所以,接口真的就是規(guī)范。

    問(wèn)題來(lái)了,為什么我認(rèn)為先有接口,后有抽象類呢?

    場(chǎng)景是這樣的,你想寫一大批類,但是發(fā)現(xiàn)這些類有很多公用屬性,比如id,創(chuàng)建時(shí)間,創(chuàng)建人等等,所以你想寫一個(gè)通用類,來(lái)把這些東西寫一遍就過(guò),所以有了基類。

    你想規(guī)范每個(gè)類的功能方法,所以有了接口,但是你發(fā)現(xiàn)只是規(guī)范,沒(méi)有實(shí)現(xiàn),這也就意味著你需要把所有接口方法都實(shí)現(xiàn)一遍,可是你發(fā)現(xiàn)很多方法和屬性一樣,也是重復(fù)的,比如獲取id,數(shù)據(jù)庫(kù)的增刪改查等等,所以你又想把這些方法統(tǒng)一的進(jìn)行實(shí)現(xiàn)。這個(gè)需求簡(jiǎn)單來(lái)說(shuō),就是又想約束,又想有部分實(shí)現(xiàn),這時(shí)候出現(xiàn)了抽象類。是的,約束作用的就是抽象類里的抽象方法,實(shí)現(xiàn)的就是抽象類里的真實(shí)方法。

    補(bǔ)充:虛方法和抽象方法。抽象方法只能在抽象類中,而且他的子類必須重寫抽象方法,誰(shuí)讓人家起到約束作用呢。虛方法可以在任何類中,除了密封類,因?yàn)檫@個(gè)東西不能被繼承。虛方法有方法體,抽象方法沒(méi)有的。虛方法可以被重寫,也可以不被重寫,但是抽象方法必須被實(shí)現(xiàn)的子類重寫,這個(gè)有點(diǎn)碰瓷的意思。子類你撞了我,你必須給我實(shí)現(xiàn)我的所有虛幻的愿望。

    最后就是這個(gè)虛方法,這個(gè)東西你重寫了,重寫后的方法比原始的優(yōu)先級(jí)就高,不重寫,就去調(diào)用原始的虛方法

    四、抽象類和接口的區(qū)別

    抽象類和接口的區(qū)別如下:

    1、普通方法提供方法體

    接口里只能包含抽象方法,靜態(tài)方法和默認(rèn)方法,不能為普通方法提供方法實(shí)現(xiàn),抽象類則完全可以包含普通方法,接口中的普通方法默認(rèn)為抽象方法。

    2、publicstaticfinal賦值

    抽象類中的成員變量可以是各種類型的,而接口中的成員變量只能是publicstaticfinal類型的,并且必須賦值,否則通不過(guò)編譯。

    3、構(gòu)造器

    接口不能包含構(gòu)造器,抽象類可以包含構(gòu)造器,抽象類里的構(gòu)造器并不是用于創(chuàng)建對(duì)象,而是讓其子類調(diào)用這些構(gòu)造器來(lái)完成屬于抽象類的初始化操作。

    4、初始化塊

    接口里不能包含初始化塊,但抽象類里完全可以包含初始化塊。

    5、繼承一個(gè)抽象類、多個(gè)接口

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

    以上就是關(guān)于類和接口的區(qū)別相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

    微營(yíng)銷推廣的種類和方法有哪些

    類和接口的區(qū)別(java類和接口的區(qū)別)

    直播形式有哪些種(直播形式有哪些種類和類型)

    眺望山野的平臺(tái)景觀設(shè)計(jì)(眺望山間景色)

    一個(gè)公司的營(yíng)銷策略(一個(gè)公司的營(yíng)銷策略有哪些)