C#中的多型
一、首先理解一下什麼叫多型:
同一種操作作用於不同的物件,可以有不同的解釋,產生不同的執行結果,這就是多型性。舉一個形象的例子,在我們聽音樂會的時候,當指揮發出開始的訊號,不同的樂器收到相同的訊號,但是他們產生不同的行為:鋼琴發出的是鋼琴的聲音,小號發出的是小號的聲響。或者,如果把每個動物當成一個物件,那麼他們都有一個方法叫做吃,但是他們卻產生不同的行為。
如圖:
二、多型的實現。
在C#中,多型性通過派生類覆寫基類中的虛擬函式型方法來實現。那麼怎樣編寫虛擬函式呢?
基類的方法要加上關鍵字virtual後變成虛方法,才可以被重寫,從而實現物件導向最重要的特徵——多型性,即基類可以使用派生類的方法。
public class Animal
{
public virtual void Eat()
{
Console.WriteLine("Eat something");
}
}
public class Cat : Animal
{
public override void Eat()
{ //完全取代基類方法
Console.WriteLine("Eat small fishes!");
}
}
public class Dog : Animal
{
public override void Eat()
{ //完全取代基類方法
Console.WriteLine("Eat small bones!");
}
}
static void Main(string[] args)
{
Animal mycat = new Cat();
Animal mydog = new Dog();
mycat.Eat();
mydog.Eat();
}
執行結果如下:
相關文章
- C#中繼承和多型的研究C#中繼繼承多型
- c# 中的封裝、繼承、多型詳解C#封裝繼承多型
- C# 多型性C#多型
- C# 多型性C#多型
- c#多型性C#多型
- 多型中的轉型多型
- c#——泛型的多種應用C#泛型
- java中的多型Java多型
- c#重寫和多型C#多型
- C#中的泛型-1C#泛型
- 聊聊 C# 中的多型底層 (虛方法呼叫) 是怎麼玩的C#多型
- C# 中的動態型別C#型別
- c#多型性測試小例C#多型
- C#中列舉型別的使用C#型別
- C# 存取SqlServer中的Image型別C#SQLServer型別
- 何為Java 中的多型?Java多型
- C中的繼承和多型繼承多型
- C# 泛型中的資料型別判定與轉換C#泛型資料型別
- C#中的介面和泛型集合探討C#泛型
- xlua中lua物件到c#物件的轉型物件C#
- Python中的繼承和多型Python繼承多型
- C#中多執行緒 委託的使用C#執行緒
- C#引用型別和值型別在堆、棧中的儲存C#型別
- JAVA中“多型”案例學習Java多型
- go中如何實現多型Go多型
- C#中將DataTable型別轉化為泛型集合C#型別泛型
- 將sql中的money轉化為c#中的資料型別SQLC#資料型別
- C#中的執行緒(三)多執行緒C#執行緒
- c#泛型的使用C#泛型
- React 應用中的效能隱患 —— 神奇的多型React多型
- 多型的概述多型
- Java 的多型Java多型
- 多型的理解多型
- C#的型別——值型別與引用型別C#型別
- C#中泛型約束(where)是什麼?C#泛型
- C#插入Oracle中Timestamp型別資料C#Oracle型別
- C# 左移右移在資料型別轉換中的使用C#資料型別
- C#中陣列Array、ArrayList、泛型List<T>的比較C#陣列泛型