91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#多態性是什么

發布時間:2021-12-03 10:13:25 來源:億速云 閱讀:141 作者:iii 欄目:編程語言

這篇文章主要介紹“C#多態性是什么”,在日常操作中,相信很多人在C#多態性是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”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()方法中的每一個都有一個重載修飾符。重載修飾符可讓該方法在運行時重載其基類的虛方法,實現這個功能的條件是:通過基類類型的指針變量來引用該類。

3.清單9-3. 實現C# 多態性的程序:DrawDemo.cs

using System;  public class DrawDemo  {      public static int Main(string[] args)      {          DrawingObject[] dObj = new DrawingObject[4];          dObj[0] = new Line();          dObj[1] = new Circle();          dObj[2] = new Square();          dObj[3] = new DrawingObject();          foreach (DrawingObject drawObj in dObj)          {              drawObj.Draw();          }          return 0;      }  }

說明

清單9-3演示了多態性的實現,該程序使用了在清單 9-1 和清單9-2中定義的類。在DrawDemo類中的Main()方法中,創建了一個數組, 數組元素是DrawingObject 類的對象。該數組名為dObj,是由四個DrawingObject類型的對象組成。

接下來, 初始化dObj數組, 由于Line, Circle和Square類都是DrawingObject類的派生類,所以這些類可以作為dObj數組元素的類型。 如果C#沒有這種功能,你得為每個類創建一個數組。繼承的性質可以讓派生對象當作基類成員一樣用,這樣就節省了編程工作量。

一旦數組初始化之后,接著是執行foreach循環,尋找數組中的每個元素。在每次循環中, dObj 數組的每個元素(對象)調用其Draw()方法。多態性體現在:在運行時,各自調用每個對象的Draw()方法。盡管dObj 數組中的引用對象類型是DrawingObject,這并不影響派生類重載DrawingObject 類的虛方法Draw()。 在dObj 數組中,通過指向DrawingObject 基類的指針來調用派生類中的重載的Draw()方法。

輸出結果是:

I'm a Line.

I'm a Circle.

I'm a Square.

I'm just a generic drawing object.

在DrawDemo 程序中,調用了每個派生類的重載的Draw()方法。 ***一行中,執行的是DrawingObject類的虛方法Draw()。這是因為運行到***,數組的第四個元素是DrawingObject類的對象。

到此,關于“C#多態性是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

惠东县| 宜丰县| 满洲里市| 利川市| 徐水县| 佛山市| 当涂县| 中山市| 东山县| 利川市| 乌鲁木齐县| 新余市| 剑阁县| 福贡县| 平山县| 屯留县| 额尔古纳市| 义马市| 伊川县| 马山县| 商水县| 巫山县| 浏阳市| 灯塔市| 玉树县| 南川市| 农安县| 琼结县| 河南省| 石泉县| 柘荣县| 南江县| 延庆县| 大洼县| 沙洋县| 晴隆县| 辽宁省| 桦甸市| 迁西县| 唐山市| 佛坪县|