淺析Java中接口和抽象類的七大區(qū)別_第1頁
淺析Java中接口和抽象類的七大區(qū)別_第2頁
淺析Java中接口和抽象類的七大區(qū)別_第3頁
淺析Java中接口和抽象類的七大區(qū)別_第4頁
淺析Java中接口和抽象類的七大區(qū)別_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論