亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

為什么需要動態綁定?

為什么需要動態綁定?

qq_笑_17 2023-11-10 16:40:21
我不明白為什么我們需要動態綁定(后期綁定)。假設我們有 A 類和 B 類,并且 B 類擴展了 A 類,現在我們可以編寫類似“A var= new B();”的內容 現在假設兩個類都包含具有相同簽名的方法,例如方法“cry()”現在我可以編寫類似“var.cry()”的內容,現在僅基于“var”的類型編譯器無法綁定正確的方法編譯期間對實例“var”的方法,但編譯器必須檢查以下語句是否合法“A var= new B();” 現在因為它必須檢查該語句是否合法,所以它必須知道“var”將引用類 B 的實例,現在如果它知道這一點,編譯器必須能夠在編譯時綁定正確的方法?
查看完整描述

2 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

假設你有

void foo(A someA) {
  someA.cry()

}

現在怎么辦?沒有人可以預先告訴您傳入的 A 是 A 還是 B!

換句話說,有很多方法無法在編譯時可靠地了解某個對象的確切性質!


查看完整回答
反對 回復 2023-11-10
?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

這在一般情況下是不可能的。例如這里:


A var;


if(x) {

    var = new A();

} else {

    var = new B();

}


var.cry();

在最后一行中,如果 var 引用的是 A 或 B 的實例,則未知。


查看完整回答
反對 回復 2023-11-10
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號