C#使用虛擬方法實(shí)現(xiàn)多態(tài)
本文實(shí)例講述了C#使用虛擬方法實(shí)現(xiàn)多態(tài)。分享給大家供大家參考。具體分析如下:
我們看一個(gè)例子,假若有一個(gè)動(dòng)物類,類中用方法cry()描述動(dòng)物的叫聲,不同的動(dòng)物的叫聲是不一樣的。根據(jù)繼承的特征,把類中公共部分的內(nèi)容放在父類中,那么cry()方法就應(yīng)該放在父類中,根據(jù)這樣的思路編寫程序如下:
using System;
class Anmial
{
public void Cry()
{
Console.WriteLine("這是動(dòng)物的叫聲");
}
}
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();
}
}
運(yùn)行后發(fā)現(xiàn)狗和貓的叫聲是相同的,都是調(diào)用了父類Cry()方法。現(xiàn)在希望在同一個(gè)方法Cry()能夠體現(xiàn)出不同動(dòng)物的叫聲,那么在子類就應(yīng)該重新描述Cry(),也就是重寫Cry()方法。
重寫方法就是修改它的實(shí)現(xiàn),或者在派生類中對它進(jìn)行重寫。在父類中用virtual 關(guān)鍵字聲明的方法在子類中可以重寫,就是虛擬方法。虛擬方法的語法如下:
訪問修飾符 virtual 返回類型 方法名()
{
//方法體
}
在父類中聲明的虛擬方法,在子類中重寫時(shí)用override關(guān)鍵字,就是將virtual關(guān)鍵字改成override,然后修改方法體中的代碼即可。
我們修改上面的代碼:
using System;
class Anmial
{
public virtual void Cry()
{
Console.WriteLine("這是動(dòng)物的叫聲");
}
}
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();
}
}
注意:父類方法的訪問級別和子類重寫方法的訪問級別相同,即它們應(yīng)該有相同的訪問修飾符。
例如:
public virtual void Hello()
不能重寫為:
private override void Hello()
希望本文所述對大家的C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
使用C#實(shí)現(xiàn)一個(gè)簡單的繪圖工具
這篇文章主要為大家詳細(xì)介紹了如何使用C#開發(fā)的簡單繪圖工具,可以將簽名簡單繪圖后的效果以圖片的形式導(dǎo)出,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-02-02
C#使用AnimateWindow()實(shí)現(xiàn)動(dòng)畫窗體的方法
用API函數(shù)AnimateWindow函數(shù)來實(shí)現(xiàn)窗體的動(dòng)畫效果,在C#中,你可以使用P/Invoke技術(shù)調(diào)用Windows API中的AnimateWindow函數(shù)來實(shí)現(xiàn)動(dòng)畫窗體,本文就給大家介紹了C#使用AnimateWindow()實(shí)現(xiàn)動(dòng)畫窗體的方法,感興趣的朋友可以參考下2024-04-04
C# 實(shí)現(xiàn)QQ式截圖功能實(shí)例代碼
本篇文章主要介紹了C# 實(shí)現(xiàn)QQ式截圖功能實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
WPF實(shí)現(xiàn)圓形進(jìn)度條的示例代碼
這篇文章主要為大家詳細(xì)介紹了WPF如何實(shí)現(xiàn)圓形的進(jìn)度條,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下2023-01-01
C#中使用Spire.XLS來操作Excel數(shù)據(jù)的實(shí)現(xiàn)
本文主要介紹了C#中使用Spire.XLS來操作Excel數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04

