接口和抽象類的區(qū)別?
? ? 區(qū)別一:
? ? 接口中全部都是抽象方法,在jdk1.8中,接口可以定義默認(rèn)方法和靜態(tài)的實(shí)體方法
抽象類中可以有抽象方法,也可以有普通方法
區(qū)別二:
接口用關(guān)鍵字interface修飾
抽象類用關(guān)鍵字abstract修飾
區(qū)別三:
接口沒有構(gòu)造方法
抽象類有構(gòu)造方法
區(qū)別四:
接口里面不能有構(gòu)造代碼塊和靜態(tài)代碼塊
抽象類中里面可以有構(gòu)造代碼塊和靜態(tài)代碼塊
區(qū)別五:
接口的實(shí)現(xiàn)類用關(guān)鍵字implement實(shí)現(xiàn),且可以多實(shí)現(xiàn)
抽象類的子類用關(guān)鍵字extends繼承,只能是單繼承
區(qū)別六:
接口中成員變量的只能是public static final類型
抽象類中的成員變量可以是任意類型
區(qū)別七:
接口是對行為的抽象,即對整個類整體進(jìn)行抽象
抽象類是對一種事物的抽象,即對類抽象
區(qū)別八:
如果一個類實(shí)現(xiàn)了該接口,則這個實(shí)現(xiàn)類和接口之間是有沒有,具不具備的關(guān)系
如果一個類繼承了抽象類,則這個類和抽象類之間是同一種類的關(guān)系
區(qū)別九:
抽象類作為很多子類的父類,他是一種模板設(shè)計模式
接口是一個行為規(guī)范,他是一種輻射式設(shè)計? ?
接口
概念:如果一個抽象類中所有的方法都是抽象方法,那么就稱這個抽象類為接口
1.接口可以繼承多個接口
2.一個類可以實(shí)現(xiàn)多個接口,實(shí)現(xiàn)的多個接口中不能出現(xiàn)"返回值不同,方法簽名相同"的抽象方法
3.接口類的修飾符默認(rèn)是public abstract
4.接口的屬性默認(rèn)是public static final修飾
5.接口的方法默認(rèn)是public abstract修飾
6.接口不是類,不能創(chuàng)建對象,沒有構(gòu)造方法
7.接口里面可以定義內(nèi)部類
8.接口里面不能有構(gòu)造代碼塊和靜態(tài)代碼塊
抽象類
概念:使用了關(guān)鍵詞abstract聲明的類叫作抽象類
1.抽象類即使不包含抽象方法也是抽象類
2.抽象類中可以包含抽象方法也可以不包含,也可以包含普通方法
3.抽象類不能被實(shí)例化,必須在子類中實(shí)例化
4.抽象類含有非抽象方法,而且子類繼承該類時,
? 重寫了該方法,那么該子類的對象調(diào)用該方法時,是子類中的方法;
? 如果子類沒有重寫該父類中的非抽象方法,那么子類對象調(diào)用的是父類中的方法