成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#多態性概念及特點的解析

開發 后端
C#多態性概念是什么呢?如何理解C#多態性概念呢?C#多態性的特點是什么呢?與C++有什么不同么?那么本文就向你介紹具體的內容。

理解C#多態性之前首先理解一下什么叫多態。同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果,這就是多態性。C#多態性通過派生類覆寫基類中的虛函數型方法來實現。

C#多態性分為兩種,一種是編譯時的多態性,一種是運行時的多態性。

◆編譯時的多態性:編譯時的多態性是通過重載來實現的。對于非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。

◆運行時的多態性:運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。C#中運行時的多態性是通過覆寫虛成員實現。

下面我們來分別理解一下C#多態中涉及到的四個概念:重載,覆寫,虛方法和抽象方法。

C#多態性之重載和覆寫的區別:

重載

類中定義的方法的不同版本

  1. public int Calculate(int x, int y)  
  2.  
  3. public double Calculate(double x, double y)  

特點(兩必須一可以)

方法名必須相同、參數列表必須不相同、返回值類型可以不相同

覆寫

子類中為滿足自己的需要來重復定義某個方法的不同實現。通過使用override關鍵字來實現覆寫。只有虛方法和抽象方法才能被覆寫。

要求(三相同)

(1)相同的方法名稱

(2)相同的參數列表

(3)相同的返回值類型

C#多態性之虛方法和抽象方法:

虛方法:

聲明使用virtual關鍵字。

調用虛方法,運行時將確定調用對象是什么類的實例,并調用適當的覆寫的方法。

虛方法可以有實現體。

抽象方法:

必須被派生類覆寫的方法。

可以看成是沒有實現體的虛方法。

如果類中包含抽象方法,那么類就必須定義為抽象類,不論是否還包含其他一般方法。

C#多態性其他的介紹:

昨天突然發現C#,和C++倆種語言在多態性的實現機制上面的細微差別。

如果是C++,在基類的構造函數里面調用虛函數的話,會調用本類的不會調用派生類的,原因是基類構造的時候,虛表還沒有被派生類繼承和修改。

但如果是C#,那就不同了,在基類的構造函數里面照樣調用派生類的。不知道有誰知道C#它的這種底層機制是怎樣的?

是這樣的,C++會先初始化基類,然后逐級初始化派生類型。C#則是一開始就把對象創建好了,然后逐個調用構造函數。本質區別在于C++的構造函數的任務是初始化,C#則不然,C#的類型的任何字段不必初始化,均有默認值,所以C#在調用構造函數之前就已經將對象初始化完畢了。

通過繼承,一個類可以用作多種類型:可以用作它自己的類型、任何基類型,或者在實現接口時用作任何接口類型。這稱為多態性。C#中的每種類型都是多態的。類型可用作它們自己的類型或用作Object實例,因為任何類型都自動將Object當作基類型。

多態性不僅對派生類很重要,對基類也很重要。任何情況下,使用基類實際上都可能是在使用已強制轉換為基類類型的派生類對象。基類的設計者可以預測到其基類中可能會在派生類中發生更改的方面。例如,表示汽車的基類可能包含這樣的行為:當考慮的汽車為小型貨車或敞篷汽車時,這些行為將會改變。基類可以將這些類成員標記為虛擬的,從而允許表示敞篷汽車和小型貨車的派生類重寫該行為。

C#多態性的相關理解就向你介紹到這里,希望對你了解和學習C#多態性有所幫助。

【編輯推薦】

  1. C#打開Excel文檔的兩大方法解析
  2. C#Excel文本搜索應用淺析
  3. C#創建Excel文件實例講解
  4. 淺析C#創建Excel文件實現的實際操作
  5. C#多態性的理解詳談
責任編輯:仲衡 來源: CSDN博客
相關推薦

2009-08-28 16:48:50

C#多態性

2009-09-01 14:51:19

C#多態性

2010-02-01 14:07:12

C++多態性

2023-10-20 09:51:00

編程開發

2009-09-04 16:37:37

C# DES算法

2009-09-09 16:46:59

C# XmlSeria

2010-10-08 14:54:22

JavaScript特

2010-01-28 16:16:32

C++多態性

2011-03-08 09:40:26

Java多態性

2009-08-20 18:47:19

C#異步通信

2009-08-18 09:51:18

C#枚舉類型

2011-07-11 16:35:28

Java

2009-06-19 14:10:42

Java多態性

2009-09-01 16:10:28

C#單元測試

2011-07-11 16:45:25

JAVA多態性

2009-08-24 15:28:19

C# 泛型方法

2009-08-20 19:08:30

C#異步調用

2009-08-24 17:39:21

C# 泛型集合

2009-07-07 17:37:32

JSP標簽庫

2009-08-12 10:37:13

C#運算符重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久一区二区 | www久| 国产精品视频不卡 | 国内精品久久久久 | 久久久久久成人 | 久久久久久亚洲精品 | 中文视频在线 | 国产成人免费在线 | 国产精品久久久久aaaa | 精品一区二区久久久久久久网站 | 精品av天堂毛片久久久借种 | 国产97在线视频 | 亚洲精品久久久一区二区三区 | 美女久久久久 | 91欧美激情一区二区三区成人 | 免费看黄色片 | 免费一区| 国产乱码精品1区2区3区 | 亚洲精品4| 免费观看黄色一级片 | 97在线观视频免费观看 | 求毛片 | 亚洲天堂中文字幕 | 久久精品国产亚洲a | 免费一区二区三区 | 色婷婷婷婷色 | 爱爱无遮挡 | 成人免费网站 | 中文字幕一区二区三区乱码在线 | 亚洲一区二区三区高清 | 日本精品一区二区 | 一级黄色夫妻生活 | 日本不卡一区二区 | 国产极品车模吞精高潮呻吟 | 国产精品久久久乱弄 | 91精品久久久久久久久中文字幕 | 精品视频久久久久久 | 日韩一区二区av | 精品欧美 | 成年视频在线观看福利资源 | h小视频|