欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C# 多態(tài)性的深入理解

 更新時(shí)間:2013年06月09日 08:56:06   作者:  
本篇文章是對C#中的多態(tài)性進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
MSDN 上面的定義:通過繼承,一個(gè)類可以有多種類型:可以用作它自己的類型,任何基類型,或者在實(shí)現(xiàn)接口時(shí)用作任何接口的類型。
從兩個(gè)方面來說明多態(tài)
1.在運(yùn)行時(shí),方法參數(shù)和集合或者是數(shù)組等位置,派生類的對象都可以作為基類的對象處理,發(fā)生此情況時(shí),該對象的聲明類型不再與運(yùn)行時(shí)類型相同。
2.基類定義實(shí)現(xiàn)虛方法,派生類重寫這些方法,在運(yùn)行時(shí),CLR會查找運(yùn)行時(shí)類型,并且調(diào)用派生類重寫的方法.
復(fù)制代碼 代碼如下:

    class Shape
    {
        public virtual void Draw()
        {
            Console.WriteLine("Draw a shape");
        }
    }
    class Circle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a circle");
        }
    }
    class Rectangle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a Rectangle");
        }
    }
    class Triangle : Shape
    {
        public override void Draw()
        {
            Console.WriteLine("Draw a Triangle");
        }
    }
    class Programm
    {
        static void Main()
        {
            //此次就說明了,派生類對象可以作為基類對象進(jìn)行處理
            Shape[] shapes =
            {
             new Circle(),
             new Rectangle(),
             new Triangle()
            };

            foreach (Shape s in shapes)
            {
                //調(diào)用Draw()方法的時(shí)候,調(diào)用了派生重寫的方法,而不是基類
                s.Draw();
            }
        }
    }

相關(guān)文章

最新評論