




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第淺析Java中接口和抽象類的七大區(qū)別目錄接口抽象類區(qū)別1:定義關(guān)鍵字不同區(qū)別2:繼承或?qū)崿F(xiàn)的關(guān)鍵字不同區(qū)別3:子類擴展的數(shù)量不同區(qū)別4:屬性訪問控制符不同區(qū)別5:方法控制符不同區(qū)別6:方法實現(xiàn)不同區(qū)別7:靜態(tài)代碼塊使用不同總結(jié)Java是一門面向?qū)ο蟮木幊陶Z言,面向?qū)ο蟮木幊陶Z言有四大特征:抽象、封裝、繼承和多態(tài)。
而本文介紹的接口和抽象類就是面向?qū)ο缶幊讨小俺橄蟆钡木唧w實現(xiàn),也就是說接口和抽象類都是用來定義實體類的公共行為的,它們是對實體類(對象)更高層次的抽象。
?說明:本文以下內(nèi)容基于JDK8版本。
接口
接口是Java語言中的一個抽象類型,用于定義對象的公共行為。它的創(chuàng)建關(guān)鍵字是interface,在接口的實現(xiàn)中可以定義方法和常量,其普通方法是不能有具體的代碼實現(xiàn)的,而在JDK8之后,接口中可以創(chuàng)建static和default方法了,并且這兩種方法可以有默認(rèn)的方法實現(xiàn),如下代碼所示:
publicinterfaceInterface_1{
intcount=1;
voidsayHi();
//default方法
defaultvoidprint(){
System.out.println("Doprintmethod.");
//static方法
staticvoidsmethod(){
System.out.println("Dostaticmethod.");
}
接下來,創(chuàng)建一個類來實現(xiàn)以上接口:
publicclassInterfaceImpl_1implementsInterface_1{
@Override
publicvoidsayHi(){
System.out.println("Hi,IamInterfaceImpl1.");
publicstaticvoidmain(String[]args){
InterfaceImpl_1inter=newInterfaceImpl_1();
inter.sayHi();
//調(diào)用接口中static方法
InterfaceExample.smethod();
//調(diào)用接口中的常量count
System.out.println(InterfaceExample.count);
以上程序的執(zhí)行結(jié)果如下:
通過上述代碼和執(zhí)行結(jié)果我們可以得出以下結(jié)論:
JDK8中接口可以定義static和default方法,并且這兩種方法可以包含具體的代碼實現(xiàn)。
實現(xiàn)接口要使用implements關(guān)鍵字。
接口不能直接實例化。
接口中定義的變量默認(rèn)為publicstaticfinal類型。
子類可以不重寫接口中的static和default方法,不重寫的情況下,默認(rèn)調(diào)用的是接口的方法實現(xiàn)。
抽象類
抽象類和接口類似,它也是用來定義對象的公共行為的,并且它也不能直接實例化,抽象類的實現(xiàn)關(guān)鍵字為abstractclass,子類用extends關(guān)鍵字繼承父類。
抽象類的使用如下:
publicabstractclassAbstractExample{
//定義普通變量
intcount=2;
//定義私有變量
privatestaticinttotal=10;
//定義抽象方法
publicabstractvoidmethodA();
//定義普通方法
publicvoidmethodB(){
System.out.println("Hi,methodB.");
接下來使用一個普通類繼承上面的抽象類:
publicclassAbstractSonextendsAbstractExample{
@Override
publicvoidmethodA(){
System.out.println("Hi,methodA.");
publicstaticvoidmain(String[]args){
AbstractSonabs=newAbstractSon();
//抽象類中的變量重新賦值
abs.count=666;
System.out.println(abs.count);
//抽象類中的抽象方法
abs.methodA();
//抽象類中的普通方法
abs.methodB();
以上程序的執(zhí)行結(jié)果如下:
通過上述代碼和執(zhí)行結(jié)果可以得出以下結(jié)論:
抽象類使用abstract關(guān)鍵字聲明。
抽象類中可以包含普通方法和抽象方法,抽象方法不能有具體的代碼實現(xiàn)。
抽象類需要使用extends關(guān)鍵字實現(xiàn)繼承。
抽象類不能直接實例化。
抽象類中屬性控制符無限制,可以定義private類型的屬性。
?接口和抽象類的區(qū)別主要體現(xiàn)在以下7個方面。
區(qū)別1:定義關(guān)鍵字不同
接口使用關(guān)鍵字interface來定義。
抽象類使用關(guān)鍵字abstract來定義。
區(qū)別2:繼承或?qū)崿F(xiàn)的關(guān)鍵字不同
接口使用implements關(guān)鍵字定義其具體實現(xiàn)。
抽象類使用extends關(guān)鍵字實現(xiàn)繼承。
區(qū)別3:子類擴展的數(shù)量不同
接口的實現(xiàn)類可以有多個,如下圖所示:
而抽象類的子類,只能繼承一個抽象類,如下圖所示,繼承多個抽象類就會報錯:
在Java語言中,一個類只能繼承一個父類(單繼承),但可以實現(xiàn)多個接口。
區(qū)別4:屬性訪問控制符不同
接口中屬性的訪問控制符只能是public,如下圖所示:
接口中的屬性默認(rèn)是publicstaticfinal修飾的。
抽象類中的屬性訪問控制符無限制,可為任意控制符,如下圖所示:
區(qū)別5:方法控制符不同
接口中方法的默認(rèn)控制符是public,并且不能定義為其他控制符,如下圖所示:
抽象類中的方法控制符無限制,其中抽象方法不能使用private修飾,如下代碼所示:
區(qū)別6:方法實現(xiàn)不同
接口中普通方法不能有具體的方法實現(xiàn),在JDK8之后static和default方法必須有方法實現(xiàn),如下代碼所示:
從上述結(jié)果可以看出:static或default方法如果沒有方法實現(xiàn)就會報錯,而普通方法如果有方法實現(xiàn)就會報錯。
?抽象類中普通方法可以有方法實現(xiàn),抽象方法不能有方法實現(xiàn),如下代碼所示:
從上述結(jié)果可以看出:抽象類中的普通方法如果沒有方法實現(xiàn)就會報錯,而抽象方法如果有方法實現(xiàn)則會報錯。
區(qū)別7:靜態(tài)代碼塊使用不同
接口中不能使用靜態(tài)代碼塊,如下代碼所示:
抽象類中可以使用靜態(tài)代碼塊,如下代碼所示:
總結(jié)
接口和抽象類都是用來定義對象的公共行為的,但二者有以下7點不同:
定義的關(guān)鍵字不同。
子類繼承或?qū)崿F(xiàn)關(guān)鍵字不同。
類型擴展不同:抽象類是單繼承,而接口是多繼承。
方法訪問控制符:抽象類無限制,只是抽象類中的抽象方法不能被private修飾;而接口有限制,接口默認(rèn)的是pub
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 本科醫(yī)學(xué)定向協(xié)議書
- 期刊運營轉(zhuǎn)讓協(xié)議書
- 林業(yè)林下開發(fā)協(xié)議書
- 析產(chǎn)糾紛和解協(xié)議書
- 模特合約解約協(xié)議書
- 教官教練安全協(xié)議書
- 朋友產(chǎn)權(quán)分配協(xié)議書
- 渣土臨時堆放協(xié)議書
- 海邊酒店承包協(xié)議書
- 推廣商務(wù)合作協(xié)議書
- 小學(xué)語文教師基本功大賽試卷及答案
- 海南省義務(wù)教育學(xué)校辦學(xué)基本標(biāo)準(zhǔn)(試行)
- 某切眼掘進工作面開口施工的安全技術(shù)措施
- 古代職業(yè)-三教九流
- 某醫(yī)院安全生產(chǎn)三項制度(安全生產(chǎn)責(zé)任制、制度、操作規(guī)程)匯編
- 音樂鑒賞之歌曲鑒賞ppt
- 2022年我國新能源汽車產(chǎn)業(yè)發(fā)展趨勢分析
- 國開電大《工程數(shù)學(xué)(本)》形成性考核作業(yè)5答案
- 部編版道德與法治六年級下冊第二單元《愛護地球共同責(zé)任》大單元作業(yè)設(shè)計
- 西藏自治區(qū)2021年小升初數(shù)學(xué)考試真題與答案解析
- 2023年全國統(tǒng)一高考地理試卷(新課標(biāo))(含解析)
評論
0/150
提交評論