接口在java編程語(yǔ)言中是一個(gè)抽象類(lèi)型,是抽象方法的集合,接口通常以interface來(lái)聲明,那java中接口可以聲明對(duì)象嗎?下面來(lái)我們就來(lái)給大家講解一下java接口的相關(guān)內(nèi)容。
可以使用接口聲明對(duì)象,但必須使用其實(shí)現(xiàn)類(lèi)實(shí)例化,接口實(shí)例化報(bào)錯(cuò)。
為什么能用接口聲明對(duì)象?
首先接口不能實(shí)例化對(duì)象這是毋庸置疑的,以下是幾點(diǎn)原因:
1.實(shí)際語(yǔ)義是實(shí)例化一個(gè)實(shí)現(xiàn)該接口的匿名內(nèi)部類(lèi),接口本身是用來(lái)抽象的,實(shí)例化接口沒(méi)有意義。
2.實(shí)例化實(shí)際意義是在jvm的堆中開(kāi)辟出一塊內(nèi)存空間,比如Student s = new Student();此處聲明Student對(duì)象s,并且實(shí)例化一個(gè)Student對(duì)象,實(shí)則是在堆中開(kāi)辟出一塊空間來(lái)存放Student對(duì)象,s則是指向這塊空間,也就是內(nèi)存中的一塊地址。這塊地址中所存放的值就是我們這個(gè)Student對(duì)象的一些屬性。而接口是抽象,沒(méi)有具體方法的實(shí)現(xiàn),但是有靜態(tài)變量。
3.本人認(rèn)為類(lèi)繼承實(shí)現(xiàn)了接口就類(lèi)似于子類(lèi)繼承父類(lèi)(因?yàn)槟憷^承接口的時(shí)候把方法重寫(xiě)了,就類(lèi)似于直接季繼承了父類(lèi),在這理解為向上轉(zhuǎn)型。) 而且new dd()可以理解為一個(gè)匿名類(lèi),這樣的話(huà)返回的值向上兼容,這樣的話(huà),接口引用c就指向了具體的實(shí)現(xiàn)接口的對(duì)象,多態(tài)的體現(xiàn)。
這樣的好處在于通過(guò)接口c來(lái)調(diào)用的方法可以屏蔽掉具體的方法實(shí)現(xiàn)。換而言之,我只需要知道c要做什么,而不需要知道c怎么做。也就是在JAVA編程中經(jīng)常用到的接口回調(diào),即面向接口的編程,更為重要的一點(diǎn)是Collection c只是引用,是一個(gè)指向具體實(shí)現(xiàn)類(lèi)的引用。
接口無(wú)法被實(shí)例化,但是可以被實(shí)現(xiàn),在 Java 中,接口類(lèi)型可用來(lái)聲明一個(gè)變量,他們可以成為一個(gè)空指針,或是被綁定在一個(gè)以此接口實(shí)現(xiàn)的對(duì)象。最后大家如果想要了解更多java初識(shí)知識(shí),敬請(qǐng)關(guān)注賦能網(wǎng)。
本文鏈接:
本文章“java中接口可以聲明對(duì)象嗎?為什么能用接口聲明對(duì)象?”已幫助 57 人
免責(zé)聲明:本信息由用戶(hù)發(fā)布,本站不承擔(dān)本信息引起的任何交易及知識(shí)產(chǎn)權(quán)侵權(quán)的法律責(zé)任!
本文由賦能網(wǎng) 整理發(fā)布。了解更多培訓(xùn)機(jī)構(gòu)》培訓(xùn)課程》學(xué)習(xí)資訊》課程優(yōu)惠》課程開(kāi)班》學(xué)校地址等機(jī)構(gòu)信息,可以留下您的聯(lián)系方式,讓課程老師跟你詳細(xì)解答:
咨詢(xún)熱線(xiàn):4008-569-579