動態繫結機制

2022-09-21 16:18:10 字數 738 閱讀 4495

例題如下:

class

m

public

intsum1()

public

intgeti()

}class n extends

m

public

intsum()

public

intsum1()

}

m m = new n();

system.out.println(m.sum());//輸出結果為40,

system.out.println(m.sum1());//輸出結果為30

當呼叫方法時,方法會和該物件的記憶體位址即執行型別進行繫結,當呼叫屬性時則沒有動態繫結,那裡宣告,**使用。

具體為:當登出n類的sum與sum1方法時:

m呼叫sum方法,因為m的執行型別為n,所以先去n中找sum方法,n中沒有則去到父類m中呼叫m的sum方法,m的sum方法內返回了乙個getid方法,此時m,n中均有該方法,但因存在動態繫結,所以返回的n中的

getid方法,n的getid方法中返回的i為n中的i,所以輸出結果為20+10=30

m呼叫sum1方法,因為m的執行型別為n,所以先去n中找sum1方法,n中沒有則去到父類m中呼叫m的sum1方法,此時sum1方法內返回的i為m中的i,所以輸出結果為:10+10=20

關於繼承和動態繫結的機制

faq 2.24 繼承是乙個很強大的手段,它具有很強的擴張能力,它使軟體可以有is a和kind of的關係。在下面的例子裡,類vehicle定義了乙個 0的成員函式 也就是在startengine 成員函式的宣告後面寫上 0 這種語法的意思是startengine 成員函式是純虛函式並且vehic...

Python的動態繫結與賦值機制

文章出處 與c c 等靜態型別繫結的語言不同,python的型別是動態繫結的。也就是你在使用乙個變數的時候是不必對它的型別進行宣告的。這是python的強大之處。它使得python可以靈活的操作各種不同型別的變數。它背後的機制是什麼呢?掌握幾個概念,就可以明白。1.名字 name 與物件 objec...

Python的動態型別繫結與賦值機制

與c c 等靜態型別繫結的語言不同,python的型別是動態繫結的。也就是你在使用乙個變數的時候是不必對它的型別進行宣告的。這是python的強大之處。它使得python可以靈活的操作各種不同型別的變數。它背後的機制是什麼呢?掌握幾個概念,就可以明白。1.名字 name 與物件 object 先說說...