C# 學習筆記 多態(一)虛方法

  在面對對象編程中,類的三大特性分別爲封裝,繼承,多態。其中多態的具體實現,依賴於三個方法,也就是虛方法,抽象類接口。編程

  多態的具體做用是什麼呢?或者說多態的存在有什麼意義呢?多態的存在有效的下降了程序的耦合度,在使用的時候,不只能夠表現你們都有的共性,還能在必要的時候突出一些特殊的的個性。ide

  那麼如何用上文三個方法實現多態呢?spa

  今天先說下虛方法:code

  首先,咱們定義一我的類的基類。其中包含了這我的的姓名和國籍。對象

class Person
{
    public string Name;
    public string Country;
    public void Introduce()
    {
      Console.WriteLine(
"個人名字是"+Name);
      Console.WriteLine("我來自"+Country); }
}

 

  而後咱們添加一個類。blog

class People1:Person { }

  此時咱們進行建立對象賦值引用繼承

People1 ch = new People1();
ch.Name = "小明";
ch.Country = "中國";
ch.Introudce();


運行結果:
個人名字是小明
我來自中國

 

  若是全部人都是中國人,那麼這個方法足以勝任,可恰恰就有這麼一我的,來自外國,不會中文,那麼這個介紹的方法就有點拗口了。這就是特例,存在即合理,總不能由於他特殊就把他抹殺了吧。這時多態站出來喊了一句:」我髮量多,讓我來!「。接口

  虛方法:在類方法聲明前加上了virtual 修飾符,就稱之爲虛方法,反之爲非虛。而且在使用了virtual 修飾符後,不容許再有static, abstract, 或override 修飾符。有了這個虛方法,咱們就能夠十分容易的解決這個特例。string

  首先咱們須要修改一下基類中的介紹方法,讓它虛化,成爲一個虛方法(說白了就是加個修飾符 virtualit

class Person
{
    public string Name;
    public string Country;
    public virtual void Introudce()//添加修飾符virtual讓介紹這個方法變成虛方法
    {
        Console.WriteLine("個人名字爲"+Name);
        Console.WriteLine("我來自"+Country);
    }
}

 

   而後咱們將這個不合羣的特例添加進來,而且專門爲他的不同凡響,對方法進行更改,咱們稱之爲重寫(override

class People2
{
    public override void introduce()
    {
        Console.WriteLine("My name is "+Name);
        Console.WriteLine("I'm from "+Country);
    }
}

 

  接下來咱們只須要將大象裝進冰箱便可。建立對象,賦值引用

People2 Eup = new People2();
Eup.Name = "Jack";
Eup.Country = "American";
Eup.Introudce();

運行結果:
My name is Jack
I'm from American

 

  不須要進行大規模的修改,根據須要進行修改,在不須要修改的時候能夠進行原有的方法使用,這就是虛方法的優勢。

以上是我我的的一些拙略看法,若是有誤,有幸被前輩看到,也但願前輩能不吝賜教,感謝感謝!!!

相關文章
相關標籤/搜索