五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java多態(tài)的實(shí)現(xiàn)機(jī)制原理

2022-03-02 10:54 作者:房頂上的鋁皮水塔  | 我要投稿

參考內(nèi)容:

Java的多態(tài)(深入版):https://segmentfault.com/a/1190000021936858

Q:Java的多態(tài)的實(shí)現(xiàn)機(jī)制原理

A:知識(shí)準(zhǔn)備:

1.?JVM中的方法調(diào)用指令:

2.Java中的方法調(diào)用分成兩種類型:

靜態(tài)調(diào)用&動(dòng)態(tài)調(diào)用

我們來看看下面的代碼。在如下的代碼中Human類型的引用man實(shí)際上是一個(gè)Man類型,woman也是類似的意思。然后在StaticDispatch中有三個(gè)重載方法,其中放入的參數(shù)類型是不同的。

最后輸出的結(jié)果:

這是因?yàn)橹剌d是靜態(tài)分派的,Human這個(gè)類型被稱為靜態(tài)類型,實(shí)際類型是Man Woman。實(shí)際類型是在運(yùn)行時(shí)確定的。

我們?cè)賮砜纯粗貙懙睦樱?/p>

這個(gè)很顯然,輸出的結(jié)果是我們重寫之后的方法的輸出。

我們通過字節(jié)碼來看看原因:

1. 對(duì)于重載的例子:

可以看到在字節(jié)碼中調(diào)用了invokevirtual調(diào)用了虛方法,因?yàn)橹剌d在編譯器是通過靜態(tài)類型確定方法參數(shù)的,所以我們能夠在Class翻譯成的Java代碼中還看到,字節(jié)碼將man對(duì)象轉(zhuǎn)換成了Human對(duì)象。

2. 重寫的例子:

重寫的例子和重載的例子類似,而且都使用了invokevirtual指令。invokevirual指令在運(yùn)行期會(huì)去尋找接受者的實(shí)際類型。所以對(duì)應(yīng)的Java class字節(jié)碼沒有像重載一樣轉(zhuǎn)型成human:


Java多態(tài)的實(shí)現(xiàn)機(jī)制原理的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
垣曲县| 民乐县| 思南县| 梅河口市| 茂名市| 荆门市| 延寿县| 彭州市| 牡丹江市| 吐鲁番市| 丹寨县| 嘉义县| 兴和县| 泸定县| 右玉县| 根河市| 加查县| 云霄县| 乃东县| 凤庆县| 诏安县| 沙洋县| 唐河县| 杭锦旗| 砚山县| 永宁县| 泾川县| 富蕴县| 磴口县| 柘城县| 兴安县| 东丰县| 酒泉市| 石河子市| 金华市| 延安市| 西畴县| 苗栗市| 雷州市| 新巴尔虎右旗| 来凤县|