文章出處

  多態的概念:讓一個對象能夠表現出多種的狀態(類型)。

  用一句話來描述多態:通過繼承實現的不同對象調用相同的方法,表現出不同的行為,稱之為多態。

  多態的作用:把不同的子類對象都當作父類來看,可以屏蔽不同子類對象之間的差異,寫出通用的代碼,做出通用的編程,以適應需求的不斷變化。讓程序具有擴展性,節省成本,提高效率。

  實現多態的3種方式: 虛方法、抽象類、接口。

  1、虛方法

  將父類的方法標記為虛方法,使用關鍵字virtual,這個方法可以被子類重新寫一遍。

  在父類的方法前面加上一個virtual,在子類的方法前面加上一個override;如果子類的方法前面不加override,編譯器不會報錯,但這樣的話,就無法通過父類來調用子類的方法,因為這個方法成了子類的獨有的方法,只是名字與父類相同而已,與父類無關。

  注意:如果需要對父類的方法進行重寫的話,一定要在子類的方法面前加上overrie進行修飾。

  什么時候使用:幾個類可以提取出一個共同的父類,它們都要完成相同的事情,而且這個父類可以被實例化。

    例如: 員工9點打卡,經理10點打卡,董事長11點打卡; 這幾個類共同的父類是員工類,它們都要完成打卡這件事情。

    public class Employee
    {
        public virtual void DaKa()
        {
            Console.WriteLine("九點打卡");
        }
    }

    public class Manager : Employee
    {
        public override void DaKa()
        {
            Console.WriteLine("經理10點打卡");
        }
    }

    public class Chairman : Employee
    {
        public override void DaKa()
        {
            Console.WriteLine("董事長11點打卡");
        }
    }
            Employee emp = new Employee();
            Manager mg = new Manager();
            Chariman cm = new Chariman();
            Employee[] emps = { emp, mg,cm };
            for (int i = 0; i < emps.Length; i++)
            {
                emps[i].DaKa();
            }
            Console.ReadKey();
  emps[i].DaKa(); 調用的依然是父類的方法 DaKa(),只不過該方法已經被子類重寫了。具體調用哪一個子類的DaKa()方法,取決于emp[i]里面裝的是哪一個的子類對象。
  上面的代碼也體現了里氏轉換原則,子類可以被賦值給父類。通過共同的父類,取消了各個子類之間的差異性。

 2、使用虛方法需要注意的幾點:

  1)父類中如果有方法需要讓子類重寫,則可以將該方法標記為virtual

  2)虛方法在父類中必須有實現,哪怕是空實現

  3)虛方法子類可以重寫(override),也可以不重寫

 

 

 

 

 

 

 

 

 

 


文章列表


不含病毒。www.avast.com
全站熱搜
創作者介紹
創作者 大師兄 的頭像
大師兄

IT工程師數位筆記本

大師兄 發表在 痞客邦 留言(0) 人氣()