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

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

關(guān)于Java動態(tài)綁定的疑惑

關(guān)于Java動態(tài)綁定的疑惑

翻翻過去那場雪 2019-04-08 11:18:28
以下內(nèi)容有選擇地摘自《Java編程思想》:enumNote{MIDDLE_C,C_SHARP,B_FLAT}classInstrument{publicvoidplay(Noten){System.out.println("Instrument.play()"+n);}}classWindextendsInstrument{@Overridepublicvoidplay(Noten){System.out.println("Wind.play()"+n);}}classBrassextendsInstrument{@Overridepublicvoidplay(Noten){System.out.println("Brass.play()"+n);}}publicclassMusic{publicstaticvoidtune(Instrumenti){i.play(Note.B_FLAT);}publicstaticvoidmain(String[]args){Windflute=newWind();tune(flute);}}之后,書中提到:請觀察一下tune()方法,它接受一個Instrument引用。那么在這種情況下,編譯器怎樣才能知道這個Instrument引用指向的是Wind對象,而不是Brass對象呢?實際上,編譯器無法得知。上述程序之所以令人迷惑,主要是因為前期綁定。因為,當編譯器只有一個Instrument引用時,它無法知道究竟調(diào)用哪個方法才對。(這句話要怎么理解?)所以,我的疑問是:既然tune()內(nèi)接的是Wind對象flute,那么它就應該知道調(diào)用Wind.play()方法,而不是調(diào)用Instrument.play()方法或Brass.play()方法。如果Wind沒有覆蓋play()方法,那么最終應該調(diào)用基類Instrument.play()方法。于是書中所說的令人迷惑的地方在哪里?還有,引用中的那句話要怎么理解?
查看完整描述

2 回答

?
繁星點點滴滴

TA貢獻1803條經(jīng)驗 獲得超3個贊

Java中屬性綁定到類型,方法綁定到對象.
編譯時期,系統(tǒng)并不清楚變量是哪個類的實例。具體調(diào)用哪個類的方法運行時才能決定。
                            
查看完整回答
反對 回復 2019-04-08
  • 2 回答
  • 0 關(guān)注
  • 276 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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