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#法式設計有所贊助。