C# 多態(tài)性的深入理解
更新時間:2013年06月09日 08:56:06 作者:
本篇文章是對C#中的多態(tài)性進行了詳細的分析介紹,需要的朋友參考下
MSDN 上面的定義:通過繼承,一個類可以有多種類型:可以用作它自己的類型,任何基類型,或者在實現(xiàn)接口時用作任何接口的類型。
從兩個方面來說明多態(tài)
1.在運行時,方法參數(shù)和集合或者是數(shù)組等位置,派生類的對象都可以作為基類的對象處理,發(fā)生此情況時,該對象的聲明類型不再與運行時類型相同。
2.基類定義實現(xiàn)虛方法,派生類重寫這些方法,在運行時,CLR會查找運行時類型,并且調(diào)用派生類重寫的方法.
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)
{
//調(diào)用Draw()方法的時候,調(diào)用了派生重寫的方法,而不是基類
s.Draw();
}
}
}
從兩個方面來說明多態(tài)
1.在運行時,方法參數(shù)和集合或者是數(shù)組等位置,派生類的對象都可以作為基類的對象處理,發(fā)生此情況時,該對象的聲明類型不再與運行時類型相同。
2.基類定義實現(xiàn)虛方法,派生類重寫這些方法,在運行時,CLR會查找運行時類型,并且調(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()
{
//此次就說明了,派生類對象可以作為基類對象進行處理
Shape[] shapes =
{
new Circle(),
new Rectangle(),
new Triangle()
};
foreach (Shape s in shapes)
{
//調(diào)用Draw()方法的時候,調(diào)用了派生重寫的方法,而不是基類
s.Draw();
}
}
}
相關(guān)文章
winform下實現(xiàn)win7 Aero磨砂效果實現(xiàn)代碼
winform下實現(xiàn)win7 Aero磨砂效果實現(xiàn)代碼,需要的朋友可以參考下2012-03-03C#實現(xiàn)將Word轉(zhuǎn)化分享為電子期刊
曾經(jīng)由一個項目,要求實現(xiàn)制作電子期刊定期發(fā)送給企業(yè)進行閱讀,由編輯人員使用 Microsoft Word先生成PDF文件,然后將生成的PDF文件轉(zhuǎn)化為JPEG文件,最后將JPEG文件生成電子書模式,本文給大家介紹了C#實現(xiàn)將Word轉(zhuǎn)化分享為電子期刊,需要的朋友可以參考下2023-12-12C#實現(xiàn)獲取文本文件的編碼的一個類(區(qū)分GB2312和UTF8)
這篇文章主要介紹了C#實現(xiàn)獲取文本文件的編碼一個類,本文給出類可以自動區(qū)分GB2312和UTF8,并同時給出了使用方法,需要的朋友可以參考下2014-09-09C#中調(diào)用VB中Inputbox類的實現(xiàn)方法
本文主要介紹在項目中引用Microsoft.VisualBasic,間接使用VB中的各種類庫的方法,或者自己創(chuàng)建函數(shù),調(diào)用自定義方法,以實現(xiàn)InputBox相關(guān)的功能。2016-05-05Silverlight文件上傳下載實現(xiàn)方法(下載保存)
這篇文章主要介紹了Silverlight文件上傳下載實現(xiàn)方法(下載保存) ,需要的朋友可以參考下2015-11-11