欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#使用虛擬方法實現(xiàn)多態(tài)

 更新時間:2015年05月19日 09:59:26   作者:一羽清寧  
這篇文章主要介紹了C#使用虛擬方法實現(xiàn)多態(tài),涉及C#多態(tài)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C#使用虛擬方法實現(xiàn)多態(tài)。分享給大家供大家參考。具體分析如下:

我們看一個例子,假若有一個動物類,類中用方法cry()描述動物的叫聲,不同的動物的叫聲是不一樣的。根據(jù)繼承的特征,把類中公共部分的內(nèi)容放在父類中,那么cry()方法就應該放在父類中,根據(jù)這樣的思路編寫程序如下:

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();
}
}

運行后發(fā)現(xiàn)狗和貓的叫聲是相同的,都是調(diào)用了父類Cry()方法。現(xiàn)在希望在同一個方法Cry()能夠體現(xiàn)出不同動物的叫聲,那么在子類就應該重新描述Cry(),也就是重寫Cry()方法。

重寫方法就是修改它的實現(xiàn),或者在派生類中對它進行重寫。在父類中用virtual 關(guān)鍵字聲明的方法在子類中可以重寫,就是虛擬方法。虛擬方法的語法如下:

訪問修飾符 virtual 返回類型 方法名()
{
//方法體
}

在父類中聲明的虛擬方法,在子類中重寫時用override關(guān)鍵字,就是將virtual關(guān)鍵字改成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#程序設(shè)計有所幫助。

相關(guān)文章

  • C# 多線程對資源讀寫時如何控制的方法

    C# 多線程對資源讀寫時如何控制的方法

    這篇文章主要介紹了C# 多線程對資源讀寫時如何控制的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • C#中通過LRU實現(xiàn)通用高效的超時連接探測

    C#中通過LRU實現(xiàn)通用高效的超時連接探測

    這篇文章主要介紹了c#中通過LRU實現(xiàn)通用高效的超時連接探測,非常不錯,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2018-11-11
  • C# winform循環(huán)播放多個視頻

    C# winform循環(huán)播放多個視頻

    這篇文章主要為大家詳細介紹了C# winform循環(huán)播放多個視頻的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C#泛型接口的協(xié)變和逆變

    C#泛型接口的協(xié)變和逆變

    本文詳細講解了C#泛型接口的協(xié)變和逆變,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • C#中事件只能在內(nèi)部調(diào)用的原因分析

    C#中事件只能在內(nèi)部調(diào)用的原因分析

    事件(Event)?基本上說是一個用戶操作,如按鍵、點擊、鼠標移動等等,或者是一些提示信息,如系統(tǒng)生成的通知。應用程序需要在事件發(fā)生時響應事件,這篇文章主要介紹了C#中事件為什么只能在內(nèi)部調(diào)用,需要的朋友可以參考下
    2021-11-11
  • C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了C#實現(xiàn)String類型和json之間的相互轉(zhuǎn)換功能,涉及C# json格式數(shù)據(jù)的構(gòu)造、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • C#和Java中二維數(shù)組區(qū)別分析

    C#和Java中二維數(shù)組區(qū)別分析

    這篇文章主要介紹了C#和Java中二維數(shù)組區(qū)別分析,主要講述了二維數(shù)組在C#和Java中定義及應用的區(qū)別,非常實用,需要的朋友可以參考下
    2014-10-10
  • .NET?Core使用C#掃描并讀取圖片中的文字

    .NET?Core使用C#掃描并讀取圖片中的文字

    本文詳細講解了.NET?Core使用C#掃描并讀取圖片中的文字,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-12-12
  • C# 封裝HtmlHelper組件:BootstrapHelper

    C# 封裝HtmlHelper組件:BootstrapHelper

    這篇文章主要介紹了C# 封裝HtmlHelper組件之BootstrapHelper 的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • C#通過標簽軟件Bartender的ZPL命令打印條碼

    C#通過標簽軟件Bartender的ZPL命令打印條碼

    這篇文章介紹了C#通過標簽軟件Bartender的ZPL命令打印條碼,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-01-01

最新評論