C# 多態性的深入理解

來源:互聯網
上載者:User

MSDN 上面的定義:通過繼承,一個類可以有多種類型:可以用作它自己的類型,任何基底類型,或者在實現介面時用作任何介面的類型。
從兩個方面來說明多態
1.在運行時,方法參數和集合或者是數組等位置,衍生類別的對象都可以作為基類的對象處理,發生此情況時,該對象的宣告類型不再與運行時類型相同。
2.基類定義實現虛方法,衍生類別重寫這些方法,在運行時,CLR會尋找運行時類型,並且調用衍生類別重寫的方法. 複製代碼 代碼如下: 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()
{
//此次就說明了,衍生類別對象可以作為基類對象進行處理
Shape[] shapes =
{
new Circle(),
new Rectangle(),
new Triangle()
};

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.