-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
1、java:一個(gè)類實(shí)現(xiàn)某個(gè)接口的時(shí)候可不可以只實(shí)現(xiàn)這個(gè)接口中的部分方法,還是必須實(shí)現(xiàn)接口中的全部方法呢
接口可以有具體方法嗎(接口可以有具體方法嗎對(duì)嗎)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于接口可以有具體方法嗎的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費(fèi)在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、java:一個(gè)類實(shí)現(xiàn)某個(gè)接口的時(shí)候可不可以只實(shí)現(xiàn)這個(gè)接口中的部分方法,還是必須實(shí)現(xiàn)接口中的全部方法呢
不一定,關(guān)鍵要看子類是否是抽象類。
如果子類是非抽象類,則必須實(shí)現(xiàn)接口中的所有方法;
如果子類是抽象類,則可以不實(shí)現(xiàn)接口中的所有方法,因?yàn)槌橄箢愔性试S有抽象方法的存在!
1、抽象類定義
抽象類往往用來表征對(duì)問題領(lǐng)域進(jìn)行分析、設(shè)計(jì)中得出的抽象概念,是對(duì)一系列看上去不同,但是本質(zhì)上相同的具體概念的抽象。通常在編程語句中用 abstract 修飾的類是抽象類。在C++中,含有純虛擬函數(shù)的類稱為抽象類,它不能生成對(duì)象;在java中,含有抽象方法的類稱為抽象類,同樣不能生成對(duì)象。抽象類是不完整的,它只能用作基類。在面向?qū)ο蠓椒ㄖ?,抽象類主要用來進(jìn)行類型隱藏和充當(dāng)全局變量的角色。
2、抽象類特點(diǎn)
1)抽象類不能實(shí)例化。
2)抽象類可以包含抽象方法和抽象訪問器。
3)不能用 sealed 修飾符修飾抽象類,因?yàn)檫@兩個(gè)修飾符的含義是相反的。 采用 sealed 修飾符的類無法繼承,而 abstract 修飾符要求對(duì)類進(jìn)行繼承。
4)從抽象類派生的非抽象類必須包括繼承的所有抽象方法和抽象訪問器的實(shí)際實(shí)現(xiàn)。
3、與具體類的比較
1)抽象類不能直接實(shí)例化,并且對(duì)抽象類使用 new 運(yùn)算符會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤。雖然一些變量和值在編譯時(shí)的類型可以是抽象的,但是這樣的變量和值必須或者為 null,或者含有對(duì)非抽象類的實(shí)例的引用(此非抽象類是從抽象類派生的)。
2)允許(但不要求)抽象類包含抽象成員。
3)抽象類不能被密封。
4、與接口的比較
1)相同點(diǎn)
a、不能實(shí)例化;
b、包含未實(shí)現(xiàn)的方法聲明;
c、派生類必須實(shí)現(xiàn)未實(shí)現(xiàn)的方法,抽象類是抽象方法,接口則是所有成員(不僅是方法包括其他成員)
2)不同點(diǎn)
a、類可以實(shí)現(xiàn)無限個(gè)接口,但僅能從一個(gè)抽象(或任何其他類型)類繼承,從抽象類派生的類仍可實(shí)現(xiàn)接口,從而得出接口是用來解決多重繼承問題的。
b、抽象類當(dāng)中可以存在非抽象的方法,可接口不能,且它里面的方法只是一個(gè)聲明必須用public來修飾沒有具體實(shí)現(xiàn)的方法。
c、抽象類中的成員變量可以被不同的修飾符來修飾,可接口中的成員變量默認(rèn)的都是靜態(tài)常量(static final)。
d、抽象類是對(duì)象的抽象,然而接口是一種行為規(guī)范。
二、java中一個(gè)接口的實(shí)現(xiàn)類中可以有接口中沒有的方法嗎
不一定,抽象類實(shí)現(xiàn)某個(gè)接口,可以不實(shí)現(xiàn)所有接口的方法,可以由它的子類實(shí)現(xiàn)。
比如
1
2
3
4
5
6
public interface A {//定義一個(gè)接口
public void show();//定義一個(gè)接口方法
}
public abstract class AExtend implements A{//抽象類實(shí)現(xiàn)接口A,但可以不實(shí)現(xiàn)show方法,由子類再去實(shí)現(xiàn)
}
三、java接口里面是否能有main方法?
不能有。
1、main方式是靜態(tài)方法,靜態(tài)方式是需要分配內(nèi)存空間,而接口是表現(xiàn)形式,沒有分配空間。
2、接口的規(guī)范規(guī)定,接口是完全抽象的一個(gè)類,不提供任何實(shí)現(xiàn),是通過實(shí)現(xiàn)類去實(shí)現(xiàn)的,而靜態(tài)方法與實(shí)現(xiàn)類無關(guān),會(huì)產(chǎn)生矛盾
3、最主要,這么定義,在編譯的時(shí)候是會(huì)報(bào)錯(cuò)的。
所以接口中不能有main方法
四、怎么調(diào)用接口中的方法
1、首先啟動(dòng)電腦上的Eclipse,依次選擇File→New→Project。在彈出的Select a wizard窗口中,選擇Java Project 后點(diǎn)擊下一步。
2、輸入項(xiàng)目名稱后點(diǎn)擊下一步(名稱命名可以任意,但是要注意符合命名規(guī)范)、
3、鼠標(biāo)右擊新建的項(xiàng)目,依次選擇New→Package,在package name里面輸入自己想取的名字后點(diǎn)擊next
4、鼠標(biāo)右擊包,依次選擇New→ Interface,創(chuàng)建一個(gè)接口
5、將接口命名為ShoutAbility后,點(diǎn)擊完成。
6、定義接口shout()方法,并按下Ctrl +S 保存,經(jīng)常保存是一個(gè)良好的習(xí)慣。
7、右擊包,依次選擇New→Class,并將類命名為AoShout。
8、將AoShout 實(shí)現(xiàn)ShoutAbility接口,并且要實(shí)現(xiàn)接口里面的shout方法,實(shí)現(xiàn)接口的關(guān)鍵字為 implements。按下Ctrl+S 保存。
9、創(chuàng)建一個(gè)Bird類,并定義一個(gè)帶參
10、創(chuàng)建一個(gè)測試類,用接口的實(shí)現(xiàn)類AoShout創(chuàng)建一個(gè)接口對(duì)象,再用創(chuàng)建的bridShout對(duì)象創(chuàng)建一個(gè)鳥對(duì)象。這時(shí)候調(diào)用鳥類的方法,就會(huì)執(zhí)行調(diào)用到接口的方法,通過接口找到實(shí)現(xiàn)類的方法嗷嗷叫。
以上就是關(guān)于接口可以有具體方法嗎相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
國際空間站對(duì)接口(國際空間站對(duì)接口能和神舟對(duì)上嗎)