classprogram
//希望person存的是哪個類的物件就呼叫哪個類的方法
//第一步 將父類中對應方法家virtual關鍵字 變為虛方法(子類可重寫)
//子類中方法用override關鍵字將父類虛方法重寫
person[i].say(); //
這句話就體現了多型
} }
}public
class
person
public
int age
public
virtual
void
say()
}public
class
american:person
}public
class
japan:person
}public
class
chinese : person
}
例項中,可以通過person中的不同型別的物件來實現不同的方法。
通過虛方法實現方法重寫 多型
方法表 方法槽 在乙個類裡邊可能有一些成員和一些方法,乙個類裡有專門的位址,記錄方法表的位址,根據方法表找到方法當子類繼承了父類以後,會拿到父類的方法表,有乙個方法槽。當子類重寫父類的方法以後,子類重寫了乙份父類的方法。如果重寫了,會從槽裡找重寫後的方法,this點方法,指向重寫後的方法,base點...
虛方法實現多型
大家都知道物件導向的三大特徵,封裝 繼承 多型,這裡解釋一下多型 同一操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。換句話說,實際上就是同乙個型別的例項呼叫 相同 的方法,產生的結果是不同的。這裡的 相同 打上雙引號是因為這裡的相同的方法僅僅是看上去相同的方法,實際上它們...
C 多型實現之虛方法
控制台應用程式中,新建乙個people類檔案,如下 using system using system.collections.generic using system.linq using system.text namespace 13多型 public string name 1.第一,將父類...