1.靜態方法是方法的缺省類型,對它就像對通常的過程和函數那樣調用,編譯器知道這些方法的地址,所以調用一個靜態方法時它能把運行信息靜態地鏈接進可執行文件,所以,靜態方法速度最快,但它們卻不能被覆蓋來支援多態性。
2、虛擬方法和靜態方法的呼叫方式相同。由於虛擬方法能被覆寫,在程式碼中呼叫一個指定的虛擬方法時編譯器並不知道它的位址,因此,編譯器透過建立虛擬方法表(VMT)來尋找在執行時間的函數位址。所有的虛擬方法在運行時透過VMT來高度,一個物件的VMT表中除了自己定義的虛擬方法外,還有它的祚的所有的虛擬方法,因此虛擬方法比動態方法用的記憶體要多,但它執行得比較快。
3.動態方法跟虛擬方法基本上相似,只是它們的高度系統不同。編譯器為每一個動態方法指定獨一無二的數字,用這個數字和動態方法的位址建構一個動態方法表(DMT)。不像VMT表,在DMT表中僅有它聲明的動態方法,而這個方法需要祖先的DMT表來存取它蓁的動態方法。正因為這樣動態方法比虛擬方法用的記憶體少,但執行起來羅慢,因為有可能要到祚物件的DMT中找出動態法。
4.OP透過覆蓋使一方法在不同的衍生類別間表現出不同的行為。 OP中能被覆蓋的方法是在聲明時被標識為virtual或dynamic的方法。為了覆寫一個方法,在衍生類別的聲明中用override代替virtual或dynamic。用了override後,編譯器就會用新的方法取代VMT中原先的方法,而原先的方法也還存在,而如果用override再次宣告一個靜態方法,則是真正的覆蓋,是用新的方法完全替換在祖先類別中的同明方法。