第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java多態(tài)練習(xí)

Java多態(tài)練習(xí)

繁星點點滴滴 2021-06-14 17:24:24
有人可以解釋編譯器/運(yùn)行時如何在示例中運(yùn)行適當(dāng)?shù)姆椒▎???6 個類和一個void m(/* ... */)具有不同參數(shù)的方法。我知道編譯器會分析聲明的類型。輸出總是來自中產(chǎn)階級的“M”。public class All {}public class Most extends All {}public class Special extends Most {}public class Top {    public void m( All p )     { System.out.println("A"); }}public class Middle extends Top {    public void m( All p )     { System.out.println("M"); }    public void m( Special p ) { System.out.println("L"); }}public class Bottom extends Middle {    public void m( Most p ) { System.out.println("V"); }    public void m( Special p ) { System.out.println("X"); }}public class Main {  public static void main(String[] args) {    All all = new All();    Most most = new Most();    Special special = new Special();    Top x = new Middle();    Top y = new Bottom();    Middle z = new Bottom();    x.m( most );     // Output is M    x.m( special );  // Output is M    y.m( all );      // Output is M    y.m( special );  // Output is M    z.m( all );      // Output is M    z.m( most );     // Output is M  }}
查看完整描述

1 回答

?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗 獲得超4個贊

方法覆蓋在運(yùn)行時通過查看對象的運(yùn)行時類型來解決。編譯器也決定調(diào)用哪個方法,但它只能根據(jù)表達(dá)式的編譯時類型來決定。

對于對 的兩次調(diào)用x,它們都Top.m(All)在編譯時解析為。x是編譯時類型Top,因此編譯器只能查找 中聲明的方法Top及其超類。編譯器發(fā)現(xiàn)唯一可用的方法是m(All). 在運(yùn)行時,要調(diào)用的方法被解析為Middle.m(All)。這是因為運(yùn)行時類型x實際上是Middle,所以運(yùn)行時將調(diào)用覆蓋m(All)Middle。為什么不叫Middle.m(Special)?編譯器已經(jīng)決定Top.m(All)應(yīng)該調(diào)用。運(yùn)行時只會檢查運(yùn)行時類型是否覆蓋了它。編譯器不知道有一個Middle.m(Special)因為x是編譯時類型Top。

這兩個調(diào)用y是相似的。y的編譯時類型仍然是Top,因此編譯器將方法解析為Top.m(All)y是運(yùn)行時類型Bottom。由于Bottom繼承自Middle,它也覆蓋Top.m(All)。實現(xiàn)與Middle. 因此在運(yùn)行時調(diào)用被覆蓋的方法。

這兩個電話z有點不同,但他們Middle.m(All)最終還是決心這樣做。的編譯時類型zMiddle,因此兩個調(diào)用都解析為Middle.m(All)。請注意,沒有Middle.m(Most),因此調(diào)用z.m(most)仍將解析為Middle.m(All)。在運(yùn)行時,該方法仍然解析為,Middle.m(All)因為運(yùn)行時類型Bottom不會覆蓋Middle.m(All)


查看完整回答
反對 回復(fù) 2021-06-23
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號