C#中的多型

周江霄發表於2014-02-26
        

        一、首先理解一下什麼叫多型:

        同一種操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。舉一個形象的例子,在我們聽音樂會的時候,當指揮發出開始的訊號,不同的樂器收到相同的訊號,但是他們產生不同的行為:鋼琴發出的是鋼琴的聲音,小號發出的是小號的聲響。或者,如果把每個動物當成一個物件,那麼他們都有一個方法叫做吃,但是他們卻產生不同的行為。

        如圖:

       

        二、多型的實現。

        在C#中,多型性通過派生類覆寫基類中的虛擬函式型方法來實現。那麼怎樣編寫虛擬函式呢?

        基類的方法要加上關鍵字virtual後變成虛方法,才可以被重寫,從而實現物件導向最重要的特徵——多型性,即基類可以使用派生類的方法。

       

        public class Animal
        {
            public virtual void Eat()
            {
                Console.WriteLine("Eat something");
            }
        }

 

        public class Cat : Animal
        {
            public override void Eat()
            {  //完全取代基類方法
                Console.WriteLine("Eat small fishes!");
            }
        }
        public class Dog : Animal
        {
            public override void Eat()
            {  //完全取代基類方法
                Console.WriteLine("Eat small bones!");
            }
        }

 

        static void Main(string[] args) 
        {
            Animal mycat = new Cat();
            Animal mydog = new Dog();
            mycat.Eat();
            mydog.Eat();
        }

         執行結果如下:

       


 

               

       

       

相關文章