C#多型性基礎實現
阿新 • • 發佈:2019-01-24
多型分為兩種情況,一種是編譯的時候的多型性,一種是執行時的多型性。
編譯時的多型性:編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。
執行時的多型性:執行時的多型性就直到執行時,才根據實際情況實現何種操作。C#中執行時的多型性是通過複寫虛擬函式實現的。
C#中的,多型人們很不容易分清楚。明明是一個相同的名稱,而呼叫起來,卻出現了不同的結果。現在來通過一個例子來體會一下多型是如何實現的。
子類繼承父類得到的方法,可以通過重寫來覆蓋。這樣父類的例項就可以使用子類的方法。
class Program { static void Main(string[] args) { fruit ep; //定義一個水果的例項 ep= new Apple(); ep.AddFruit(5); ep = new Orange(); ep.AddFruit(4); } } public abstract class fruit //建立一個抽象類-水果 { private uint nint_Weight; public abstract void AddFruit(uint nWeight); } public class Apple : fruit //建立水果的子類-蘋果 { public override void AddFruit(uint nWeight) { Console.WriteLine("你添加了一個蘋果,質量為{0}",nWeight); } } public class Orange : fruit //建立水果的子類-橘子 { public override void AddFruit(uint nWeight) { Console.WriteLine("你添加了一個橘子,質量為{0}", nWeight); } }
繼承:當子類繼承父類的時候,子類可以不用重新定義父類中的方法,可以直接使用。
多型:當子類重寫父類的方法時。父類的物件,呼叫子類的方法時候,會根據情況來選擇基類的方法。