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

區(qū)別:

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

  2. 接口中的方法定義默認(rèn)為 public abstract 類型,接口中的成員變量類型默認(rèn)為 public static final (這里需要說一點(diǎn),既然一個(gè)變量被final修飾了,那么這個(gè)變量就是一個(gè)常量!!!!!變量必須初始化成常量!!!!!)

語法區(qū)別:

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

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

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

  4. 抽象類中的抽象方法的訪問類型可以是public,protected,但接口中的抽象方法只能是public類型的,并且默認(rèn)即為public abstract類型。

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

  6. 抽象類和接口中都可以包含靜態(tài)成員變量(static),抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static final類型,并且默認(rèn)即為public static final類型。

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

  8. 一個(gè)接口可以繼承多個(gè)接口。

  9. 抽象類所體現(xiàn)的是一種繼承關(guān)系,要想使得繼承關(guān)系合理,父類和派生類之間必須存在"is-a"關(guān)系關(guān)系,即父類和派生類在概念本質(zhì)上應(yīng)該是相同的。對于接口則不然,并不要求接口的實(shí)現(xiàn)者和接口定義在概念本質(zhì)上是一致的,僅僅是實(shí)現(xiàn)了接口定義的契約而已,是"like-a"的關(guān)系。

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

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,662評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運(yùn)行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,810評論 0 11
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,254評論 0 62
  • (文/2015.8.17) 初 逞具 春風(fēng)渡 心弦微觸 驅(qū)百年孤獨(dú) 魯王宮秦神樹 護(hù)他周全于險(xiǎn)處 云頂蛇沼重重迷霧...
    _搖呀搖閱讀 222評論 0 0

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