抽象類與接口

謝邀,鄭重聲明一下。請大家仔細閱讀,你要是從頭到尾讀完還沒明白接口和抽象類的區別。那么你還是別學編程了。?

這是初學者經常會遇到的問題,看到這個問題,自己想起來以前痛苦的學習過程。簡單的回答一下。接口和抽象類之間有沒有區別?可以肯定的回答:有區別。那既然有區別,我們不妨帶著疑問去探索一下,語言設計者們在設計接口和抽象類時為什么要設計出區別,他們的目的何在。編程語言的設計其實也是一門哲學。

首先接口和抽象類的設計目的就是不一樣的。接口是對動作的抽象,而抽象類是對根源的抽象。對于抽象類,比如男人,女人這兩個類,那我們可以為這兩個類設計一個更高級別的抽象類--人。對于接口,我們可以坐著吃飯,可以站著吃飯,可以用筷子吃飯,可以用叉子吃飯,甚至可以學三哥一樣用手抓著吃飯,那么可以把這些吃飯的動作抽象成一個接口--吃飯。所以在高級語言中(如Java,C#),一個類只能繼承一個抽象類(因為你不可能同時是生物又是非生物)。但是一個類可以同時實現多個接口,比如開車接口,滑冰接口,啪啪啪接口,踢足球接口,游泳接口。

?總結幾句話來說:

1、抽象類和接口都不能被直接實例化,如果二者要實例化,就涉及到多態,不懂多態的參見我的回答<a href=\"https://www.zhihu.com/question/30082151/answer/120520568\" class=\"internal\">JAVA的多態用幾句話能直觀的解釋一下嗎? - 知乎。如果抽象類要實例化,那么抽象類定義的變量必須指向一個子類對象,這個子類繼承了這個抽象類并實現了這個抽象類的所有抽象方法。如果接口要實例化,那么這個接口定義的變量要指向一個子類對象,這個子類必須實現了這個接口所有的方法。

2、抽象類要被子類繼承,接口要被子類實現。

3、接口里面只能對方法進行聲明,抽象類既可以對方法進行聲明也可以對方法進行實現。

4、抽象類里面的抽象方法必須全部被子類實現,如果子類不能全部實現,那么子類必須也是抽象類。接口里面的方法也必須全部被子類實現,如果子類不能實現那么子類必須是抽象類

5、接口里面的方法只能聲明,不能有具體的實現。這說明接口是設計的結果,抽象類是重構的結果。</p>

6、抽象類里面可以沒有抽象方法

7、如果一個類里面有抽象方法,那么這個類一定是抽象類。

8、抽象類中的方法都要被實現,所以抽象方法不能是靜態的static,也不能是私有的private。

9、接口(類)可以繼承接口,甚至可以繼承多個接口。但是類只能繼承一個類。

10、抽象級別(從高到低):接口&gt;抽象類&gt;實現類。

11、抽象類主要是用來抽象類別,接口主要是用來抽象方法功能。當你關注事物的本質的時候,請用抽象類;當你關注一種操作的時候,用接口。

12、抽象類的功能應該要遠多于接口,但是定義抽象類的代價較高。因為高級語言一個類只能繼承一個父類,即你在設計這個類的時候必須要抽象出所有這個類的子類所具有的共同屬性和方法;但是類(接口)卻可以繼承多個接口,因此每個接口你只需要將特定的動作方法抽象到這個接口即可。也就是說,接口的設計具有更大的可擴展性,而抽象類的設計必須十分謹慎。


文章來源:https://www.zhihu.com/people/leaping123/activities

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容

  • 你很清楚的知道什么時候用抽象類,什么時候用接口么?p.s. 多文字預警! 1 抽象類和接口簡介 1.1 抽象類 ...
    Sharember閱讀 2,361評論 9 55
  • 一、抽象類 1、抽象類含義的概括: 當多個類出現相同功能時,但功能主體不同,這樣可以向上抽取,抽取時只抽取功能定義...
    玉圣閱讀 840評論 0 6
  • 一、抽象類: 抽象類是特殊的類,只是不能被實例化;除此以外,具有類的其他特性;重要的是抽象類可以包括抽象方法,這是...
    FrozenSunset閱讀 514評論 0 3
  • 對于面向對象編程來說,抽象是它的一大特征之一。在Java中,可以通過兩種形式來體現OOP的抽象:接口和抽象類。接口...
    Q南南南Q閱讀 376評論 0 3
  • 文章出自:安卓進階學習指南作者:Milo審核者: Struggle完稿日期:2017.10.24 常見問題 什么時...
    敢沖才不枉青春_Milo閱讀 302評論 0 0