C#應用虛擬辦法完成多態。本站提示廣大學習愛好者:(C#應用虛擬辦法完成多態)文章只能為提供參考,不一定能成為您想要的結果。以下是C#應用虛擬辦法完成多態正文
本文實例講述了C#應用虛擬辦法完成多態。分享給年夜家供年夜家參考。詳細剖析以下:
我們看一個例子,假如有一個植物類,類頂用辦法cry()描寫植物的啼聲,分歧的植物的啼聲是紛歧樣的。依據繼續的特點,把類中公共部門的內容放在父類中,那末cry()辦法就應當放在父類中,依據如許的思緒編寫法式以下:
using System; class Anmial { public void Cry() { Console.WriteLine("這是植物的啼聲"); } } class Dog: Anmial { public void Run() { Console.WriteLine("狗路得快"); } } class Cat: Anmial { public void Look() { Console.WriteLine("貓長得乖"); } } class Test { static void Main() { Dog mydog = new Dog(); mydog.Cry(); mydog.Run(); Cat mycat = new Cat(); mycat.Cry(); mycat.Look(); Console.ReadKey(); } }
運轉後發明狗和貓的啼聲是雷同的,都是挪用了父類Cry()辦法。如今願望在統一個辦法Cry()可以或許表現出分歧植物的啼聲,那末在子類就應當從新描寫Cry(),也就是重寫Cry()辦法。
重寫辦法就是修正它的完成,或許在派生類中對它停止重寫。在父類頂用virtual 症結字聲明的辦法在子類中可以重寫,就是虛擬辦法。虛擬辦法的語法以下:
拜訪潤飾符 virtual 前往類型 辦法名()
{
//辦法體
}
在父類中聲明的虛擬辦法,在子類中重寫時用override症結字,就是將virtual症結字改成override,然後修正辦法體中的代碼便可。
我們修正下面的代碼:
using System; class Anmial { public virtual void Cry() { Console.WriteLine("這是植物的啼聲"); } } class Dog: Anmial { public override void Cry() { Console.WriteLine("這是狗的啼聲汪汪"); } } class Cat: Anmial { public override void Cry() { Console.WriteLine("這是貓的啼聲喵喵"); } } class Test { static void Main() { Dog mydog = new Dog(); mydog.Cry(); Cat mycat = new Cat(); mycat.Cry(); Console.ReadKey(); } }
留意:父類辦法的拜訪級別和子類重寫辦法的拜訪級別雷同,即它們應當有雷同的拜訪潤飾符。
例如:
public virtual void Hello()
不克不及重寫為:
private override void Hello()
願望本文所述對年夜家的C#法式設計有所贊助。