抽象用于不同的事物,而接口用于事物的行為。
從語(yǔ)法層面而言,接口和抽象類的區(qū)別如下:
1.抽象類可以提供成員方法的實(shí)現(xiàn)細(xì)節(jié),而接口中只能存在抽象方法(默認(rèn) public abstract)
2.抽象類中的成員變量可以是多種類型,而接口中的成員變量必須用public static final(常量)修飾
3.一個(gè)類只能繼承一個(gè)抽象類(單繼承),但可以實(shí)現(xiàn)多個(gè)接口(多繼承)。
4.抽象類中允許含有靜態(tài)代碼塊和靜態(tài)方法,而接口類不能。
從設(shè)計(jì)層面而言,接口和抽象類的區(qū)別如下:
1.抽象類是對(duì)整一個(gè)類的屬性,行為等方面進(jìn)行抽象,而接口則是對(duì)行為抽象。就好比飛機(jī)和鳥(niǎo),抽象類抽象 出的是飛行物類。而接口則是抽閑出飛行方法。
2.抽象類是一個(gè)模板式的設(shè)計(jì),當(dāng)在開(kāi)發(fā)過(guò)程中出現(xiàn)需求更改的情況,只需要更改抽象類而不需要更改它的子類。接口是一種輻射性設(shè)計(jì),當(dāng)接口的內(nèi)容發(fā)生改變時(shí),需要同時(shí)對(duì)實(shí)現(xiàn)它的子類進(jìn)行相應(yīng)的修改。
3.抽象類可以類比為模板,而接口可以類比為協(xié)議