java抽象類(lèi)與接口

原來(lái)我只知道一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口旁涤,但只可以繼承一個(gè)抽象類(lèi)碉咆,但并不能清楚地認(rèn)識(shí)到它們的區(qū)別及使用的場(chǎng)景。

在查閱不同的博客之后我得到結(jié)論:抽象類(lèi)是對(duì)概念本質(zhì)的總結(jié)败玉,接口是對(duì)行為的規(guī)范敌土。

什么是抽象類(lèi)呢,我是這樣理解的运翼,就是從不同的東西抽象出來(lái)相同的屬性或者行為的類(lèi)返干,但這個(gè)類(lèi)并不能具體地描述一個(gè)具體類(lèi)。比如手機(jī)和座機(jī)都同屬于通訊工具血淌,通訊工具抽象出了手機(jī)和座機(jī)可以通訊等特點(diǎn)矩欠,但通訊工具并不能準(zhǔn)確地描述手機(jī)和座機(jī),因?yàn)槭謾C(jī)悠夯、座機(jī)還有其他的屬性癌淮。

接口同樣可以把手機(jī)和座機(jī)的行為抽象出來(lái),為什么不用接口呢沦补,因?yàn)槭謾C(jī)座機(jī)除了通訊的方法乳蓄,還需要其他的屬性,如型號(hào)夕膀、出廠日期等虚倒,接口只支持定義靜態(tài)不可變的屬性,這顯然不符合要求产舞。還有抽象類(lèi)中可以沒(méi)有抽象方法裹刮,意味著我們可以在這里寫(xiě)默認(rèn)的行為,被子類(lèi)繼承后庞瘸,子類(lèi)可以調(diào)用super.方法名()捧弃,這樣就不會(huì)造成代碼的重復(fù),接口要實(shí)現(xiàn)這樣的效果擦囊,需要依靠定義擁有這個(gè)方法的接口的對(duì)象作為成員變量违霞,做法請(qǐng)看對(duì)“針對(duì)接口編程”的理解

抽象類(lèi)能夠保證實(shí)現(xiàn)的層次關(guān)系瞬场,避免代碼重復(fù)买鸽。然而,即使在使用抽象類(lèi)的場(chǎng)合贯被,也不要忽視通過(guò)接口定義行為模型的原則眼五。如果依賴(lài)于抽象類(lèi)來(lái)定義行為妆艘,往往導(dǎo)致過(guò)于復(fù)雜的繼承關(guān)系,而通過(guò)接口定義行為能夠更有效地分離行為與實(shí)現(xiàn)看幼,為代碼的維護(hù)和修改帶來(lái)方便批旺。

總結(jié):

關(guān)于實(shí)例化:

  • 抽象類(lèi)和接口都不能直接實(shí)例化,如果要實(shí)例化诵姜,抽象類(lèi)變量必須指向?qū)崿F(xiàn)所有抽象方法的子類(lèi)對(duì)象汽煮,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類(lèi)對(duì)象(注意:匿名類(lèi)也是具體實(shí)現(xiàn)了方法的)。

關(guān)于實(shí)現(xiàn):

  • 抽象類(lèi)要被子類(lèi)繼承(使用extends)棚唆;
    接口要被類(lèi)實(shí)現(xiàn)(使用implements)暇赤。

  • 接口可繼承接口,并可多繼承接口宵凌;
    但類(lèi)只能單繼承鞋囊。
    (抽象類(lèi)也同樣可以繼承一個(gè)類(lèi)和實(shí)現(xiàn)多個(gè)接口)

關(guān)于成員變量:

  • 接口里定義的變量只能是公共的靜態(tài)的常量(默認(rèn)是static 和final修飾,可以不寫(xiě))瞎惫;
    抽象類(lèi)中的變量是普通變量溜腐,可自定義訪問(wèn)權(quán)限。

關(guān)于方法:

  • 抽象類(lèi)可以有構(gòu)造函數(shù)微饥;
    接口不可以有構(gòu)造函數(shù)

  • 抽象類(lèi)中的方法可以被static修飾
    jdk8以后接口也可以聲明static方法

  • 接口能做方法申明 (方法必須是public逗扒,如果寫(xiě)成其他的編譯時(shí)會(huì)報(bào)錯(cuò)古戴,如果不寫(xiě)欠橘,則默認(rèn)方法是public abstract),接口在jdk8之后也可以包含有完整邏輯的實(shí)例方法(使用default關(guān)鍵字现恼,若是一個(gè)類(lèi)實(shí)現(xiàn)多個(gè)接口中有同名的默認(rèn)方法肃续,那么就會(huì)沖突,解決方法是子類(lèi)重寫(xiě)這個(gè)沖突的方法)叉袍;
    抽象類(lèi)中可以做方法申明(使用abstract 始锚; 訪問(wèn)修飾是public,默認(rèn)的可不寫(xiě))喳逛,也可以方法實(shí)現(xiàn)(可以被public,protected等修飾符修飾瞧捌;抽象方法只能申明,不能實(shí)現(xiàn)润文。abstract void abc();不能寫(xiě)成abstract void abc(){}姐呐。去掉abstract之后可以實(shí)現(xiàn)它,也就是非抽象函數(shù)可被實(shí)現(xiàn))典蝌,抽象類(lèi)里可以沒(méi)有抽象方法曙砂。

  • 抽象類(lèi)里的抽象方法必須全部被子類(lèi)所實(shí)現(xiàn),如果子類(lèi)不能全部實(shí)現(xiàn)父類(lèi)抽象方法骏掀,那么該子類(lèi)只能是抽象類(lèi)鸠澈,也就是說(shuō)一個(gè)類(lèi)里有抽象方法柱告,那么這個(gè)類(lèi)只能是抽象類(lèi);
    一個(gè)實(shí)現(xiàn)接口的時(shí)候笑陈,如不能全部實(shí)現(xiàn)接口方法际度,那么該類(lèi)也只能為抽象類(lèi)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末新锈,一起剝皮案震驚了整個(gè)濱河市甲脏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌妹笆,老刑警劉巖块请,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異拳缠,居然都是意外死亡墩新,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)窟坐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)海渊,“玉大人,你說(shuō)我怎么就攤上這事哲鸳〕家桑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵徙菠,是天一觀的道長(zhǎng)讯沈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)婿奔,這世上最難降的妖魔是什么缺狠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮萍摊,結(jié)果婚禮上挤茄,老公的妹妹穿的比我還像新娘。我一直安慰自己冰木,他們只是感情好穷劈,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著踊沸,像睡著了一般歇终。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雕沿,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天逻悠,我揣著相機(jī)與錄音叙谨,去河邊找鬼村砂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛辽俗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播篡诽,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼崖飘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了杈女?” 一聲冷哼從身側(cè)響起朱浴,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎达椰,沒(méi)想到半個(gè)月后翰蠢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啰劲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年梁沧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蝇裤。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廷支,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栓辜,到底是詐尸還是另有隱情恋拍,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布藕甩,位于F島的核電站施敢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏辛萍。R本人自食惡果不足惜悯姊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一羡藐、第九天 我趴在偏房一處隱蔽的房頂上張望贩毕。 院中可真熱鬧,春花似錦仆嗦、人聲如沸辉阶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谆甜。三九已至,卻和暖如春集绰,著一層夾襖步出監(jiān)牢的瞬間规辱,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工栽燕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罕袋,地道東北人改淑。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浴讯,于是被迫代替她去往敵國(guó)和親朵夏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 對(duì)于面向?qū)ο缶幊虂?lái)說(shuō)榆纽,抽象是它的一大特征之一仰猖。在Java中,可以通過(guò)兩種形式來(lái)體現(xiàn)OOP的抽象:接口和抽象類(lèi)奈籽。接口...
    Q南南南Q閱讀 368評(píng)論 0 3
  • 抽象類(lèi)與接口是java語(yǔ)言中對(duì)抽象概念進(jìn)行定義的兩種機(jī)制饥侵,正是由于他們的存在才賦予java強(qiáng)大的面向?qū)ο蟮哪芰ΑK?..
    洋芋掉到碗里去了閱讀 342評(píng)論 0 0
  • 抽象類(lèi)與接口 抽象類(lèi)和接口似乎在功能上沒(méi)什么區(qū)別衣屏,主要作用都是為了規(guī)范類(lèi)的行為爆捞。然而,既然同時(shí)存在這兩種概念勾拉,那必...
    白犬定春閱讀 517評(píng)論 2 6
  • 看到題目的時(shí)候煮甥,你掌握這個(gè)知識(shí)點(diǎn)了嗎? 常見(jiàn)面試問(wèn)題如下: 接口和抽象類(lèi)的區(qū)別藕赞,什么時(shí)候使用? 抽象類(lèi)和接口的相同...
    Real_man閱讀 1,887評(píng)論 0 4
  • “嚴(yán)峻的就業(yè)形勢(shì)成肘,上完大學(xué)找不到好工作,使‘讀書(shū)無(wú)用論’思想在農(nóng)村蔓延斧蜕。如果孩子成績(jī)平平只能上專(zhuān)科双霍,還不如早些出去...
    孤獨(dú)一刀閱讀 1,628評(píng)論 22 25