抽象類和接口

重點:執(zhí)行同一套邏輯但是調(diào)用的是不同方法就用抽象類或者接口,大多數(shù)時候用抽象類更加合適!
抽象類表示的是,這個對象是什么。接口表示的是,這個對象能做什么。比如,男人,女人,這兩個類(如果是類的話……),他們的抽象類是人。說明,他們都是人。

人可以吃東西,狗也可以吃東西,你可以把“吃東西”定義成一個接口,然后讓這些類去實現(xiàn)它.

所以,在高級語言上,一個類只能繼承一個類(抽象類)(正如人不可能同時是生物和非生物),但是可以實現(xiàn)多個接口(吃飯接口、走路接口)。
接口更多的是在系統(tǒng)架構(gòu)設(shè)計方法發(fā)揮作用,主要用于定義模塊之間的通信契約。
而抽象類在代碼實現(xiàn)方面發(fā)揮作用,可以實現(xiàn)代碼的重用。
模板方法設(shè)計模式是抽象類的一個典型應(yīng)用。

抽象類和接口
相同點:
(1) 都可以被繼承
(2) 都不能被實例化
(3) 都可以包含方法聲明
(4) 派生類必須實現(xiàn)未實現(xiàn)的方法
區(qū) 別:
(1) 抽象基類可以定義字段、屬性、方法實現(xiàn)。接口只能定義屬性、索引器、事件、和方法聲明,不能包含字段。
(2) 抽象類是一個不完整的類,需要進一步細(xì)化,而接口是一個行為規(guī)范。微軟的自定義接口總是后帶able字段,證明其是表述一類“我能做。。。”
(3) 接口可以被多重實現(xiàn),抽象類只能被單一繼承
(4) 抽象類更多的是定義在一系列緊密相關(guān)的類間,而接口大多數(shù)是關(guān)系疏松但都實現(xiàn)某一功能的類中
(5) 抽象類是從一系列相關(guān)對象中抽象出來的概念, 因此反映的是事物的內(nèi)部共性;接口是為了滿足外部調(diào)用而定義的一個功能約定, 因此反映的是事物的外部特性
(6) 接口基本上不具備繼承的任何具體特點,它僅僅承諾了能夠調(diào)用的方法
(7) 接口可以用于支持回調(diào),而繼承并不具備這個特點
(8) 抽象類實現(xiàn)的具體方法默認(rèn)為虛的,但實現(xiàn)接口的類中的接口方法卻默認(rèn)為非虛的,當(dāng)然您也可以聲明為虛的
(9) 如果抽象類實現(xiàn)接口,則可以把接口中方法映射到抽象類中作為抽象方法而不必實現(xiàn),而在抽象類的子類中實現(xiàn)接口中方法

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

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

  • 先來看看抽象類和接口的定義: 抽象類(abstract class): 使用abstract修飾符修飾的類。官方點...
    IT廢柴閱讀 54,153評論 7 45
  • 1. 抽象類 什么是抽象類 包含一個抽象方法的類就是抽象類 抽象方法 聲明而未被實現(xiàn)的方法,抽象方法必須使用abs...
    FantJ閱讀 1,469評論 0 5
  • 1)抽象類與接口的問題,面了好幾個公司,都會被問到,其實這也是開發(fā)過程中經(jīng)常遇到的問題,在這里所說的接口是指jdk...
    Hughman閱讀 1,326評論 0 2
  • 愚蠢的女孩 我把你愛上 你卻看不透我的伎倆 那是一首五分鐘的情詩 和一只五毛的鉛筆 我開始成為混蛋的那天 是我十八...
    我沒尷尬過閱讀 177評論 0 0
  • 01 我認(rèn)識一個女孩,她夢想中的職業(yè)是當(dāng)記者——專門聽別人說話,寫別人的故事。但由于父母百般勸說,記者這個行當(dāng)不穩(wěn)...
    f5c8375254c2閱讀 301評論 0 1

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