抽象類和接口的區(qū)別

含有abstract 修飾符的class即為抽象類,abstract類不能創(chuàng)建的實(shí)例對(duì)象。含有

abstract方法的類必須定義為abstract class,abstract class類中的方法不必是抽

象類。abstract class 類中定義抽象類必須在具體(Concrete)子類中實(shí)現(xiàn),所以

不能有抽象構(gòu)造方法或抽象靜態(tài)方法。如果他的子類沒有實(shí)現(xiàn)抽象父類中的所有

抽象方法,那么子類也必須定義為abstract類型。

接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象

的。接口中的方法定義默認(rèn)為public abstract類型,接口中的成員變量類型默認(rèn)為public

static final。

下面比較一下兩者的語法區(qū)別:

1.抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。

2.抽象類中可以有普通成員變量,接口中沒有普通成員變量

3.抽象類中可以包含非抽象的普通方法,接口中的所有方法必須都是抽象的,不能有

非抽象的普通方法。

4.抽象類中的抽象方法的訪問類型可以是public protected和默認(rèn)類型,但是接口中的

抽象方法只能是public類型的,并且默認(rèn)為即為public abstract類型。

5.抽象類中可以包含靜態(tài)方法,接口中不能包含靜態(tài)方法

6.抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可

以任意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static

final類型。

7.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但只能繼承一個(gè)抽象類。

下面說一下兩者在應(yīng)用上的區(qū)別:

接口更多的是在系統(tǒng)架構(gòu)設(shè)計(jì)方法發(fā)揮作用,主要用于定義模塊之間的通信契約。

而抽象類在代碼實(shí)現(xiàn)方面發(fā)揮作用,可以實(shí)現(xiàn)代碼的重用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 先來看看抽象類和接口的定義: 抽象類(abstract class): 使用abstract修飾符修飾的類。官方點(diǎn)...
    IT廢柴閱讀 54,148評(píng)論 7 45
  • 區(qū)別: 接口(interface)可以說成是抽象類的一種特例,接口中的所有方法都必須是抽象的。 接口中的方法定義默...
    SinX竟然被占用了閱讀 452評(píng)論 0 1
  • abstract關(guān)鍵字修飾的類就是抽象類(abstract class),抽象類是聲明方法的存在而不去實(shí)現(xiàn)它的類,...
    StrongZhao閱讀 372評(píng)論 0 0
  • 抽象類和接口的區(qū)別: 抽象類可以實(shí)現(xiàn)代碼的復(fù)用;抽象類不可以創(chuàng)建實(shí)例對(duì)象; 有抽象方法的類一定是抽象類,抽象類中的...
    java大濕兄閱讀 1,107評(píng)論 2 4
  • 1.抽象類可以有構(gòu)造方法,接口中不能有構(gòu)造方法。2.抽象類中可以有普通成員變量,接口中沒有普通成員變量3.抽象類中...
    li九日閱讀 218評(píng)論 0 0

友情鏈接更多精彩內(nèi)容