程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#多態性的概念及其應用(1)

C#多態性的概念及其應用(1)

編輯:關於C語言

多態是面向對象編程中三大機制之一,其原理建立在"從父類繼承而來的 子類可以轉換為其父類"這個規則之上,換句話說,能用父類的地方,就能用 該類的子類.當從父類派生了很多子類時,由於每個子類都有其不同的代碼實現, 所以當用父類來引用這些子類時,同樣的操作而可以表現出不同的操作結果,這就 是所謂的多態.

1.了解什麼是C#多態性

2.如何定義一個虛方法

3.如何重載一個虛方法

4.如何在程序中運用多態性

面向 對象程序設計中的另外一個重要概念是C#多態性。在運行時,可以通過指向基類 的指針,來調用實現派生類中的方法。 可以把一組對象放到一個數組中,然後 調用它們的方法,在這種場合下,多態性作用就體現出來了,這些對象不必是相 同類型的對象。當然,如果它們都繼承自某個類,你可以把這些派生類,都放到 一個數組中。 如果這些對象都有同名方法,就可以調用每個對象的同名方法。 本節課將向你介紹如何完成這些事情。

1.清單9-1. 帶有虛方法的基類: DrawingObject.cs

using System;
public class  DrawingObject
{
    public virtual void Draw()
    {
        Console.WriteLine("I'm just  a generic drawing object.");
    }
}

說明

清單9-1 定義了DrawingObject類。這是個可以讓其 他對象繼承的基類。該類有一個名為Draw()的方法。Draw()方法帶有一個 virtual修飾符,該修飾符表明:該基類的派生類可以重載該方法。 DrawingObject類的 Draw()方法完成如下事情:輸出語句"I'm just a generic drawing object."到控制台。

2.清單9-2. 帶有重載方法 的派生類:Line.cs, Circle.cs, and Square.cs

using  System;
public class Line : DrawingObject
{
     public override void Draw()
    {
         Console.WriteLine("I'm a Line.");
    }
}

public class Circle : DrawingObject
{
     public override void Draw()
    {
         Console.WriteLine("I'm a Circle.");
     }
}

public class Square : DrawingObject
{
    public override void Draw()
    {
         Console.WriteLine("I'm a Square.");
    }
}

說明

清單9-2定義了三個類。這三個類 都派生自DrawingObject類。每個類都有一個同名Draw()方法,這些Draw()方法 中的每一個都有一個重載修飾符。重載修飾符可讓該方法在運行時重載其基類的 虛方法,實現這個功能的條件是:通過基類類型的指針變量來引用該類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved