一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java 多態性詳解及常見面試題

java 多態性詳解及常見面試題

2020-07-05 12:09java教程網 JAVA教程

這篇文章主要介紹了java 多態性詳解及常見面試題的相關資料,這里對java 的多態性做了資料整理,并列舉常見的關于多態性的面試題,需要的朋友可以參考下

java多態性

多態分兩種:

(1)   編譯時多態(設計時多態):方法重載。

(2)   運行時多態:JAVA運行時系統根據調用該方法的實例的類型來決定選擇調用哪個方法則被稱為運行時多態。(我們平時說得多的事運行時多態,所以多態主要也是指運行時多態)

運行時多態存在的三個必要條件:

一、要有繼承(包括接口的實現);
二、要有重寫;
三、父類引用指向子類對象。

多態的好處:

1.可替換性(substitutability)。多態對已存在代碼具有可替換性。例如,多態對圓Circle類工作,對其他任何圓形幾何體,如圓環,也同樣工作。

2.可擴充性(extensibility)。多態對代碼具有可擴充性。增加新的子類不影響已存在類的多態性、繼承性,以及其他特性的運行和操作。實際上新加子類更容易獲得多態功能。例如,在實現了圓錐、半圓錐以及半球體的多態基礎上,很容易增添球體類的多態性。

3.接口性(interface-ability)。多態是超類通過方法簽名,向子類提供了一個共同接口,由子類來完善或者覆蓋它而實現的。如圖8.3 所示。圖中超類Shape規定了兩個實現多態的接口方法,computeArea()以及computeVolume()。子類,如Circle和Sphere為了實現多態,完善或者覆蓋這兩個接口方法。

4.靈活性(flexibility)。它在應用中體現了靈活多樣的操作,提高了使用效率。

5.簡化性(simplicity)。多態簡化對應用軟件的代碼編寫和修改過程,尤其在處理大量對象的運算和操作時,這個特點尤為突出和重要。

注意:優先級從高到低:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)。

相關面試題

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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...{}

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

        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

分析:

做這種題的話要時時刻刻使用那個優先級順序:

對于第一題:

a1是A類的一個實例化對象,所以this指向A,然后查找this.show(b),由于沒有這個方法,所以到super.show(b),但是由于A類沒有超類了,所以到this.show(super b),由于b的超類是A,所以相當于this.show(A),然后在A類中查找到了這個方法,于是輸出A and A。

對于第二題:

同樣,a1是A類的實例化對象,所以this指向A,然后在A類中查找this.show(C)方法,由于沒有這個方法,所以到了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類的實例化對象,所以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,所以執行方法this。show(A),在A方法里面找show(A),找到了,但是由于a2是一個類B的引用對象,而B類里面覆蓋了A類的show(A)方法,所以最終執行的是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),同樣沒有找到,發現B還有超類,即A,所以還繼續在A類里面找show(A)方法,找到了,但是由于a2是一個類B的引用對象,而B類里面覆蓋了A類的show(A)方法,所以最終執行的是B類里面的show(A)方法,即輸出B and A;

對于第六題:

a2是B類的引用對象,類型為A,所以this指向A類,然后在A類里面找this.show(D)方法,找到了,但是由于a2是一個類B的引用對象,所以在B類里面查找有沒有覆蓋show(D)方法,沒有,所以執行的是A類里面的show(D)方法,即輸出A and D;

對于第七題:

b是B類的一個實例化對象,首相執行this.show(B),在B類里面找show(B)方法,找到了,直接輸出B and B;

對于第八題:

b是B類的一個實例化對象,首相執行this.show(C),在B類里面找show(C)方法,沒有找到,所以到了super.show(c),B的超類是A,所以在A類中找show(C)方法,沒有找到,于是到了this.show(super C),C的超類是B,所以在B類中找show(B)f方法,找到了,所以執行B類中的show(B)方法輸出B and B;

對于第九題:

b是B類的一個實例化對象,首相執行this.show(D),在B類里面找show(D)方法,沒有找到,于是到了super.show(D),B的超類是A類,所以在A類里面找show(D)方法,找到了,輸出A and D;

這是我看過網上的題目之后總結出來的方法,希望對大家有好處。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 9久久9久久精品 | 天天干夜夜添 | 99热精品在线播放 | 亚洲精品国产成人 | 午夜dj影院在线视频观看完整 | 亚洲精品中文 | 无码人妻精品一区二区蜜桃在线看 | eeuss18影院www国产 | 欧美日韩亚洲高清不卡一区二区三区 | 精品无码国产AV一区二区三区 | 亚洲大片在线观看 | 无码骚夜夜精品 | 日本黄色录像视频 | 日本老师xxxxx18 | 亚洲国产韩国欧美在线不卡 | 久久国产视频网 | 北海市副市长黄江老公 | 欧亚精品一区二区三区 | 9lporm自拍视频在线 | 我的漂亮朋友在线观看全集免费 | 国产乱人乱精一区二区视频密 | 青春娱乐国产分类精品二 | 日本无遮挡亲吻膜下面免费 | 色亚洲视频 | 天美蜜桃精东乌鸦传媒 | 九九久久国产 | 亚洲热在线观看 | 日本成熟老妇xxxx | 日本午夜视频 | 日韩一级片在线观看 | 色一情一区二区三区四区 | 天堂va在线 | 成人黄页网站 | 欧美一区二区日韩一区二区 | sxx免费看视频在线播放 | 国产伦精品一区二区三区免 | 欧洲破处 | 欧美香蕉| 小早川怜子亚洲综合中文字幕 | 青青国产在线观看 | 亚洲人成网站在线观看90影院 |