什么是多態?


多態是指同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。

多態建立在類的繼承之上:

  • 類成員的 “橫向拓展” (類成員越來越多)
  • 類成員的 “縱向拓展” (類的行為改變,類的成員的 “版本升高”)
  • 類成員的隱藏 (new 關鍵字)——不常用,因為理解復雜且容易出錯
  • 類成員的重寫 (override 關鍵字)
  • 重寫和隱藏發生的條件:函數或屬性成員一致,擁有可見性(如父類的是private,那肯定不能重寫了),函數或屬性簽名需要一致(方法名,參數類型,返回類型)

多態:

基於類的重寫機制(virtual-override):函數成員的具體行為(版本)由引用的對象決定

class Program
    {
        static void Main(string[] args)
        {
            Person person = new Person();
            person.Show();

            Person teacher = new Teacher();
            teacher.Show();

            //子類方法版本被隱藏 則找尋上一個版本
            Person doctor = new Doctor();
            doctor.Show();

        }
    }

    class Person
    {
        public virtual void Show()
        {
            Console.WriteLine("I am Person");
        }
    }

    class Teacher : Person
    {
        public override void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

    class Doctor : Teacher
    {
        //在多態狀態時  隱藏改方法
        public new void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

  

基於接口的多態機制:接口的行為由它決定的接口實現

class Program
    {
        static void Main(string[] args)
        {
            IPerson person = new Person();
            person.Show();

            IPerson teacher = new Teacher();
            teacher.Show();
        }
    }

    interface IPerson
    {
        public void Show();
    }

    class Person : IPerson
    {
        public void Show()
        {
            Console.WriteLine("I am Person");
        }
    }

    class Teacher : IPerson
    {
        public void Show()
        {
            Console.WriteLine("I am Teacher");
        }
    }

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM