更新時(shí)間:2020-05-29 15:21:24 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2635次
在Java中抽象類(lèi)和接口都是用于實(shí)現(xiàn)抽象的,那么它們之間有什么差異?在討論抽象類(lèi)和接口的區(qū)別之前,我們先來(lái)看看抽象類(lèi)和接口各自的特性是什么。
抽象類(lèi)是用來(lái)捕捉子類(lèi)的通用特性,即共同點(diǎn)的;比如:汽車(chē)、自行車(chē)、電瓶車(chē),它們都是車(chē)子,可以有一個(gè)共同的抽象類(lèi):Vehicle。抽象類(lèi)不能被實(shí)例化,不能用來(lái)創(chuàng)建對(duì)象,只能用作子類(lèi)的超類(lèi)。
接口是抽象方法的集合。如果一個(gè)類(lèi)實(shí)現(xiàn)了某個(gè)接口,那么它就會(huì)繼承了這個(gè)接口的全部抽象方法。
注:抽象方法是一種特殊的方法,它只有聲明,但沒(méi)有具體的實(shí)現(xiàn)。
接口只是一種形式,它本身是不能做任何事情;如果想要實(shí)現(xiàn)一個(gè)接口,那么就必須確保要實(shí)現(xiàn)這個(gè)接口里的所以方法。
抽象類(lèi)和接口的區(qū)別:
1.抽象類(lèi)可以同時(shí)具有抽象和具體方法;而,接口只能有抽象方法,它是抽象方法的集合(從Java 8開(kāi)始,它也可以有默認(rèn)和靜態(tài)方法)。
2.抽象類(lèi)不支持多重繼承,一次只能擴(kuò)展一個(gè)類(lèi)或一個(gè)抽象類(lèi)。接口支持多重繼承,可以一次擴(kuò)展任意數(shù)量的接口。
3.抽象類(lèi)可以有final,non-final,static和non-static等變量。接口只有靜態(tài)和最終變量。
4.抽象類(lèi)可以擴(kuò)展另一個(gè)具體(常規(guī))類(lèi)或抽象類(lèi),并實(shí)現(xiàn)Java接口(一個(gè)或多個(gè))。一個(gè)接口只能擴(kuò)展另一個(gè)Java接口,且接口不能實(shí)現(xiàn)抽象類(lèi)。
5.在抽象類(lèi)中,關(guān)鍵字:“abstract”是將方法聲明為抽象的必需項(xiàng)。在接口中,關(guān)鍵字:“abstract”是可選的,用于將方法聲明為抽象
7.可以使用關(guān)鍵字“extends”擴(kuò)展抽象類(lèi)。一個(gè)接口類(lèi)可以使用關(guān)鍵字“implements”來(lái)實(shí)現(xiàn)。
8.Java抽象類(lèi)可以具有受保護(hù)和公共抽象方法,可以有類(lèi)成員,如private,protected等。默認(rèn)情況下,Java接口的成員是公共的,接口只能有公共抽象方法。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java編程技術(shù)分析,Java抽象類(lèi)與接口區(qū)別”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743