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#支援將json中的多種型別反序列化為object型別C#JSON型別Object
- 聊聊 C# 中的多型底層 (虛方法呼叫) 是怎麼玩的C#多型
- java中的多型Java多型
- C# 中的動態型別C#型別
- 多型中的返回值型別多型型別
- 何為Java 中的多型?Java多型
- 什麼是多型?物件導向中對多型的理解多型物件
- C# 泛型中的資料型別判定與轉換C#泛型資料型別
- xlua中lua物件到c#物件的轉型物件C#
- C#中的介面和泛型集合探討C#泛型
- Python中的繼承和多型Python繼承多型
- C#引用型別和值型別在堆、棧中的儲存C#型別
- Java中的類繼承與多型Java繼承多型
- JAVA中“多型”案例學習Java多型
- C#泛型C#泛型
- 【C#】-泛型C#泛型
- C# 泛型C#泛型
- C#之多型C#多型
- Java 的多型Java多型
- 多型的概述多型
- C# 左移右移在資料型別轉換中的使用C#資料型別
- C# 泛型集合的自定義型別排序C#泛型型別排序
- C#中泛型約束(where)是什麼?C#泛型
- React 應用中的效能隱患 —— 神奇的多型React多型
- [C#]C#中字串的操作C#字串
- c#:值型別&引用型別C#型別
- c#中值型別和引用型別的區別C#型別
- c# gRPC服務中 常見proto支援的資料型別C#RPC資料型別
- C#泛型集合C#泛型
- 多型的總結多型
- 關於c#多執行緒中的幾個訊號量C#執行緒
- 一文帶你瞭解python中的多型Python多型
- C# 在PDF文件中應用多種不同字型C#
- 多型~多型
- 多型。多型