1. 程式人生 > >C#多型性基礎實現

C#多型性基礎實現

      多型分為兩種情況,一種是編譯的時候的多型性,一種是執行時的多型性。

      編譯時的多型性:編譯時的多型性是通過過載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的引數、返回的型別等資訊決定實現何種操作。

      執行時的多型性:執行時的多型性就直到執行時,才根據實際情況實現何種操作。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);
        }
    }

              

      繼承:當子類繼承父類的時候,子類可以不用重新定義父類中的方法,可以直接使用。

      多型:當子類重寫父類的方法時。父類的物件,呼叫子類的方法時候,會根據情況來選擇基類的方法。