-
當前位置:首頁 > 創(chuàng)意學院 > 技術 > 專題列表 > 正文
接口和抽象類的區(qū)別
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關于接口和抽象類的區(qū)別的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關鍵詞,就能返回你想要的內容,越精準,寫出的就越詳細,有微信小程序端、在線網頁版、PC客戶端
本文目錄:
一、抽象類和接口有什么區(qū)別?
抽象類的成員可以具有訪問級別,而接口的成員全部public級別
抽象類可以包含字段,而接口不可以,
抽象類可以繼承接口,而接口不能繼承抽象類
抽象類的成員可以具有具體實現,而接口不行
抽象的子類可以選擇性實現其基類的抽象方法,而接口的子類必須實現
二、抽象類和接口的區(qū)別與聯系
1.抽象類:規(guī)定了一系列的方法,并規(guī)定了必須由繼承類實現的方法。由于有抽象方法的存在,所以抽象類不能實例化??梢詫⒊橄箢惱斫鉃槊鞣浚T窗,墻面的樣式由你自己來定,所以抽象類與作為基類的普通類的區(qū)別在于約束性更強。
2.接口類:與抽象類很相似,表現在接口中定義的方法,必須由引用類實現,但他與抽象類的根本區(qū)別在于用途:與不同個體間溝通的規(guī)則,你要進宿舍需要有鑰匙,這個鑰匙就是你與宿舍的接口,你的舍友也有這個接口,所以他也能進入宿舍,你用手機通話,那么手機就是你與他人交流的接口。
3.區(qū)別和關聯:
1.接口是抽象類的變體,接口中所有的方法都是抽象的,而抽象類中可以有非抽象方法,抽象類是聲明方法的存在而不去實現它的類
2.接口可以繼承,抽象類不行
3.接口定義方法,沒有實現的代碼,而抽象類可以實現部分方法
4.接口中基本數據類型為static而抽象類不是
三、抽象類和接口有什么區(qū)別?
答得稀爛。。。
網上再學習了一次,在這里記下看到各位大蝦的金言。
一、抽象類:
在面向對象領域,抽象類主要用來進行類型隱藏。那什么是類型隱藏呢?我們可以構造出一個固定的一組行為的抽象描述,但是這組行為卻能夠有任意個可能的具體實現方式。這個抽象描述就是抽象類,而這一組任意個可能的具體實現則表現為所有可能的派生類。好比,動物是一個抽象類,人、猴子、老虎就是具體實現的派生類,我們就可以用動物類型來隱藏人、猴子和老虎的類型。( 參考doSome方法)二、接口:
三、抽象類和接口的區(qū)別:
首先,抽象類在Java語言中表示的是一種繼承關系,一個類只能使用一次繼承關系。但是,一個類卻可以實現多個接口。也許,這是Java語言的設計者在考慮Java對于多重繼承的支持方面的一種折中考慮吧。 其次,在抽象類的定義中,我們可以賦予方法的默認行為。但是在接口的定義中,方法卻不能擁有默認行為,為了繞過這個限制,必須使用委托,但是這會 增加一些復雜性,有時會造成很大的麻煩。 抽象類在Java語言中體現了一種繼承關系,要想使得繼承關系合理,父類和派生類之間必須存在”is a”關系,即父類和派生類在概念本質上應該是相同的。對于接口來說則不然,并不要求接口的實現者和接口定義在概念本質上是一致的,僅僅是實現了接口定義的契約而已。接口表示的是”like
a”關系。 使用抽象類來定義允許多個實現的類型,比使用接口有一個明顯的優(yōu)勢:抽象類的演化比接口的演化要容易的多。在后續(xù)的發(fā)行版中,如果希望在抽象類中增加一個方法,只增加一個默認的合理的實現即可,抽象類的所有實現都自動提供了這個新的方法。對于接口,這是行不通的。雖然可以在骨架實現類中增加一方法的實現來解決部分問題,但這不能解決不從骨架實現類繼承的接口實現的問題。由此,設計公有的接口要非常謹慎,一旦一個接口被公開且被廣泛實現,對它進行修改將是不可能的。 所以,使用接口還是抽象類,取決于我們對問題的概念的本質理解和設計的意圖。
Java接口與抽象類的相同點:
1. 都不能被實例化。
2. 都能包含抽象方法。
抽象類與接口緊密相關。然接口又比抽象類更抽象,這主要體現在它們的差別上:1)類可以實現無限個接口,但僅能從一個抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實現接口,從而得出接口是用來解決多重繼承問題的。2)抽象類當中可以存在非抽象的方法,可接口不能且它里面的方法只是一個聲名必須用public來修飾沒有具體實現的方法。3)抽象類中的成員變量可以被不同的修飾符來修飾,可接口中的成員變量默認的都是靜態(tài)常量(static fainl)。4)這一點也是最重要的一點本質的一點抽象類是對象的抽象,然接口是一種行為規(guī)范。
例如每個接口可以代表一種最頂層的抽象,可以理解為代表一類東西,如果一個類實現了多個接口,那這個類就有了多種類型,即接口是定義混合類型的理想工具最后:有一種設計模式,就是,默認適配模式,意思就是說,首先定義一個接口,通過抽象類實現這個接口,并實現一些子類不需要一定實現的方法,然后,子類就可以選擇是繼承接口,實現所有方法,還是直接繼承這個抽象類實現具體需要的方法,
定義成抽象類是為了以后要其子類來繼承的,因為父類里有很多方法是無法定義具體的實現的,只能定義一個原型,讓子類來分別實現!所以要定義成抽象的!
簡單來說就是
抽象類是在接口和實體類之間的一個橋梁例如做一個接口叫做飛行FlyAnimalAction,里面定義一個方法叫做flying,再定義一個方法叫做eat
做一個類叫做蚊子實現接口,蚊子要實現flying方法,實現自己的eat方法
做一個類叫做蒼蠅實現接口,蒼蠅也要實現flying方法,實現自己的eat方法
你發(fā)現所有會飛的動物都要實現這個接口,很麻煩,不如
做一個抽象類FlyAnimal,然后實現上面的接口
在里面實現flying這個方法,因為大部分的飛行動作是一樣的,而eat方法則繼續(xù)寫成抽象方法,因為大部分的動物吃東西是不一樣的
下面你再寫蚊子類就簡單了,可以直接繼承這個抽象類,然后實現自己的吃方法就行了
而且蒼蠅類的制作也是一樣,這個時候抽象類的功能就顯示出來了,當然抽象類的功能遠遠不是這些,只是初期理解到這里就夠了。
四、什么是接口與抽象類有什么區(qū)別
接口與抽象類的區(qū)別為
一 創(chuàng)建的文件后綴名不同,接口的后綴名是interface,抽象類是(abstract)class。
二 實現方式不同,接口實現用implements,抽象類實現是extends。
三 接口沒有方法體,抽象類可以有方法體。
四 概念不一樣,接口定義一種行為規(guī)范,抽象類是一類事物的高度聚合,一般作為父類,由子類去實現,并且子類還可以增添新的行為和特征。
五 可以不用繼承抽象類定義的抽象方法,但是接口定義的所有規(guī)范必須實現。
以上僅供參考。
以上就是關于接口和抽象類的區(qū)別相關問題的回答。希望能幫到你,如有更多相關問題,您也可以聯系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內容。
推薦閱讀:
chatGPT開放API(ChatGPT開放API接口會怎樣-)
usb接口被公司禁用怎么用u盤(usb接口被公司禁用怎么用u盤打開)