java多態(tài)面試題

java多態(tài)性

多態(tài)分兩種:

(1) 編譯時(shí)多態(tài)(設(shè)計(jì)時(shí)多態(tài)):方法重載旨涝。

(2) 運(yùn)行時(shí)多態(tài):JAVA運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例的類型來決定選擇調(diào)用哪個(gè)方法則被稱為運(yùn)行時(shí)多態(tài)。(我們平時(shí)說得多的事運(yùn)行時(shí)多態(tài),所以多態(tài)主要也是指運(yùn)行時(shí)多態(tài))

運(yùn)行時(shí)多態(tài)存在的三個(gè)必要條件:

一白华、要有繼承(包括接口的實(shí)現(xiàn))慨默;
二、要有重寫弧腥;
三厦取、父類引用指向子類對象。

多態(tài)的好處:

1.可替換性(substitutability)管搪。多態(tài)對已存在代碼具有可替換性虾攻。例如,多態(tài)對圓Circle類工作更鲁,對其他任何圓形幾何體霎箍,如圓環(huán),也同樣工作澡为。

2.可擴(kuò)充性(extensibility)漂坏。多態(tài)對代碼具有可擴(kuò)充性。增加新的子類不影響已存在類的多態(tài)性媒至、繼承性顶别,以及其他特性的運(yùn)行和操作。實(shí)際上新加子類更容易獲得多態(tài)功能拒啰。例如驯绎,在實(shí)現(xiàn)了圓錐、半圓錐以及半球體的多態(tài)基礎(chǔ)上谋旦,很容易增添球體類的多態(tài)性剩失。

3.接口性(interface-ability)。多態(tài)是超類通過方法簽名册着,向子類提供了一個(gè)共同接口赴叹,由子類來完善或者覆蓋它而實(shí)現(xiàn)的。如圖8.3 所示指蚜。圖中超類Shape規(guī)定了兩個(gè)實(shí)現(xiàn)多態(tài)的接口方法乞巧,computeArea()以及computeVolume()。子類摊鸡,如Circle和Sphere為了實(shí)現(xiàn)多態(tài)绽媒,完善或者覆蓋這兩個(gè)接口方法。

4.靈活性(flexibility)免猾。它在應(yīng)用中體現(xiàn)了靈活多樣的操作是辕,提高了使用效率。

5.簡化性(simplicity)猎提。多態(tài)簡化對應(yīng)用軟件的代碼編寫和修改過程获三,尤其在處理大量對象的運(yùn)算和操作時(shí),這個(gè)特點(diǎn)尤為突出和重要。

注意:優(yōu)先級從高到低:this.show(O)疙教、super.show(O)棺聊、this.show((super)O)、super.show((super)O)贞谓。

相關(guān)面試題:

class A { 
     public String show(D obj)...{ 
        return ("A and D"); 
     } 
     public String show(A obj)...{ 
        return ("A and A"); 
     } 
} 
class B extends A{ 
     public String show(B obj)...{ 
        return ("B and B"); 
     } 
     public String show(A obj)...{ 
        return ("B and A"); 
     } 
} 
class C extends B...{} 
class D extends B...{}

(二)問題:以下輸出結(jié)果是什么限佩?

    A a1 = new A();
    A a2 = new B();
    B b = new B();
    C c = new C();
    D d = new D();
    System.out.println(a1.show(b));   ①
    System.out.println(a1.show(c));   ②
    System.out.println(a1.show(d));   ③
    System.out.println(a2.show(b));   ④
    System.out.println(a2.show(c));   ⑤
    System.out.println(a2.show(d));   ⑥
    System.out.println(b.show(b));     ⑦
    System.out.println(b.show(c));     ⑧
    System.out.println(b.show(d));     ⑨ 

(三)答案

          ①   A and A
          ②   A and A
          ③   A and D
          ④   B and A
          ⑤   B and A
          ⑥   A and D
          ⑦   B and B
          ⑧   B and B
          ⑨   A and D

分析:

做這種題的話要時(shí)時(shí)刻刻使用那個(gè)優(yōu)先級順序:

對于第一題:

a1是A類的一個(gè)實(shí)例化對象,所以this指向A裸弦,然后查找this.show(b),由于沒有這個(gè)方法祟同,所以到super.show(b),但是由于A類沒有超類了理疙,所以到this.show(super b),由于b的超類是A晕城,所以相當(dāng)于this.show(A),然后在A類中查找到了這個(gè)方法,于是輸出A and A窖贤。

對于第二題:

同樣砖顷,a1是A類的實(shí)例化對象,所以this指向A主之,然后在A類中查找this.show(C)方法,由于沒有這個(gè)方法李根,所以到了super.show(C),由于A類的超類里面找槽奕,但是A沒有超類,所以到了this.show(super C)房轿,由于C的超類是B所以在A類里面查找this.show(B)方法粤攒,也沒找到,然后B也有超類囱持,就是A夯接,所以查找this.show(A),找到了,于是輸出A and A纷妆;

對于第三題:

同樣盔几,a1是A類的實(shí)例化對象,所以this指向A掩幢,然后在A類中找到this.show(D)方法逊拍,找到了,所以就輸出A and D际邻;

對于第四題:

a2是B類的引用對象芯丧,類型為A,所以this指向A類世曾,然后在A類里面找this.show(B)方法缨恒,沒有找到,所以到了super.show(B),由于A類沒有超類,所以到了this.show(super B)骗露,B的超類是A岭佳,即super B = A,所以執(zhí)行方法this椒袍。show(A)驼唱,在A方法里面找show(A),找到了驹暑,但是由于a2是一個(gè)類B的引用對象玫恳,而B類里面覆蓋了A類的show(A)方法,所以最終執(zhí)行的是B類里面的show(A)方法优俘,即輸出B and A京办;

對于第五題:

a2是B類的引用對象,類型為A帆焕,所以this指向A類惭婿,然后在A類里面找this.show(C)方法,沒有找到叶雹,所以到了super.show(C)方法财饥,由于A類沒有超類,所以到了this.show(super C),C的超類是B折晦,所以在A類里面找show(B)钥星,同樣沒有找到,發(fā)現(xiàn)B還有超類满着,即A谦炒,所以還繼續(xù)在A類里面找show(A)方法,找到了风喇,但是由于a2是一個(gè)類B的引用對象宁改,而B類里面覆蓋了A類的show(A)方法,所以最終執(zhí)行的是B類里面的show(A)方法魂莫,即輸出B and A还蹲;

對于第六題:

a2是B類的引用對象,類型為A耙考,所以this指向A類秽誊,然后在A類里面找this.show(D)方法,找到了琳骡,但是由于a2是一個(gè)類B的引用對象锅论,所以在B類里面查找有沒有覆蓋show(D)方法,沒有楣号,所以執(zhí)行的是A類里面的show(D)方法最易,即輸出A and D怒坯;

對于第七題:

b是B類的一個(gè)實(shí)例化對象,首相執(zhí)行this.show(B)藻懒,在B類里面找show(B)方法剔猿,找到了,直接輸出B and B嬉荆;

對于第八題:

b是B類的一個(gè)實(shí)例化對象归敬,首相執(zhí)行this.show(C),在B類里面找show(C)方法鄙早,沒有找到汪茧,所以到了super.show(c),B的超類是A,所以在A類中找show(C)方法限番,沒有找到舱污,于是到了this.show(super C),C的超類是B,所以在B類中找show(B)f方法弥虐,找到了扩灯,所以執(zhí)行B類中的show(B)方法輸出B and B;

對于第九題:

b是B類的一個(gè)實(shí)例化對象霜瘪,首相執(zhí)行this.show(D)珠插,在B類里面找show(D)方法,沒有找到颖对,于是到了super.show(D),B的超類是A類捻撑,所以在A類里面找show(D)方法,找到了惜互,輸出A and D布讹;
轉(zhuǎn)載:https://m.jb51.net/article/97263.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末琳拭,一起剝皮案震驚了整個(gè)濱河市训堆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌白嘁,老刑警劉巖坑鱼,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異絮缅,居然都是意外死亡鲁沥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進(jìn)店門耕魄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來画恰,“玉大人,你說我怎么就攤上這事吸奴≡噬龋” “怎么了缠局?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長考润。 經(jīng)常有香客問我狭园,道長,這世上最難降的妖魔是什么糊治? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任唱矛,我火速辦了婚禮,結(jié)果婚禮上井辜,老公的妹妹穿的比我還像新娘绎谦。我一直安慰自己,他們只是感情好抑胎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布燥滑。 她就那樣靜靜地躺著,像睡著了一般阿逃。 火紅的嫁衣襯著肌膚如雪铭拧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天恃锉,我揣著相機(jī)與錄音搀菩,去河邊找鬼。 笑死破托,一個(gè)胖子當(dāng)著我的面吹牛肪跋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播土砂,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼州既,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了萝映?” 一聲冷哼從身側(cè)響起吴叶,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎序臂,沒想到半個(gè)月后蚌卤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奥秆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年逊彭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片构订。...
    茶點(diǎn)故事閱讀 39,953評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡侮叮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出悼瘾,到底是詐尸還是另有隱情囊榜,我是刑警寧澤谷异,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站锦聊,受9級特大地震影響歹嘹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜孔庭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一尺上、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧圆到,春花似錦怎抛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至挣菲,卻和暖如春富稻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背白胀。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工椭赋, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人或杠。 一個(gè)月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓哪怔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親向抢。 傳聞我的和親對象是個(gè)殘疾皇子认境,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評論 2 355

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

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,991評論 0 13
  • 隔了很多年再去那家醫(yī)院叉信,看到熟悉的交叉縱橫起伏不平的坡路,和路邊鱗次櫛比的買鮮花水果日用品的店鋪們。想了起來兄猩,這就...
    君子不欺公子方閱讀 913評論 1 7
  • 人在旅途茉盏,久看車窗外大地夜色 飛馳鉴未。黯然神傷起來 中年的樣子盡管模糊 內(nèi)心天真隨頂上毛發(fā)一齊稀少去
    彭有倦閱讀 232評論 0 3
  • 清晨六點(diǎn),他被逐漸響亮的鬧鐘叫醒连茧,這個(gè)鈴聲并不陌生核蘸,從女兒上幼兒園第一天起到現(xiàn)在三年級巍糯,無論是酷夏,還是寒冬客扎,他老...
    玉米嬸閱讀 554評論 4 8
  • 永興便江徙鱼,水上有霧宅楞,日落降至,水生霧起袱吆,宛如電影情節(jié)的特效厌衙,感覺回到了夢里,然而老水手似乎并不俗套绞绒,喝了一口燒酒,...
    光年塵埃閱讀 1,034評論 0 0