偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

C#多態(tài)性的理解詳談

開發(fā) 后端
對(duì)于C#多態(tài)性的理解,我們首先從概念的內(nèi)涵收入,深入的理解了C#多態(tài)性的本質(zhì),那么具體的內(nèi)容希望對(duì)你學(xué)習(xí)C#多態(tài)性有所幫助。

C#多態(tài)性的內(nèi)涵實(shí)際就是通過繼承,一個(gè)類可以用作多種類型:可以用作它自己的類型、任何基類型,或者在實(shí)現(xiàn)接口時(shí)用作任何接口類型。這稱為多態(tài)性。C# 中的每種類型都是多態(tài)的。類型可用作它們自己的類型或用作 Object 實(shí)例,因?yàn)槿魏晤愋投甲詣?dòng)將 Object 當(dāng)作基類型。

多態(tài)性不僅對(duì)派生類很重要,對(duì)基類也很重要。任何情況下,使用基類實(shí)際上都可能是在使用已強(qiáng)制轉(zhuǎn)換為基類類型的派生類對(duì)象。基類的設(shè)計(jì)者可以預(yù)測到其基類中可能會(huì)在派生類中發(fā)生更改的方面。例如,表示汽車的基類可能包含這樣的行為:當(dāng)考慮的汽車為小型貨車或敞篷汽車時(shí),這些行為將會(huì)改變?;惪梢詫⑦@些類成員標(biāo)記為虛擬的,從而允許表示敞篷汽車和小型貨車的派生類重寫該行為。

C#多態(tài)性概念的理解

當(dāng)派生類從基類繼承時(shí),它會(huì)獲得基類的所有方法、字段、屬性和事件。若要更改基類的數(shù)據(jù)和行為,您有兩種選擇:可以使用新的派生成員替換基成員,或者可以重寫虛擬的基成員。

使用新的派生成員替換基類的成員需要使用 new 關(guān)鍵字。如果基類定義了一個(gè)方法、字段或?qū)傩?,則 new 關(guān)鍵字用于在派生類中創(chuàng)建該方法、字段或?qū)傩缘男露x。new 關(guān)鍵字放置在要替換的類成員的返回類型之前。例如:

C#多態(tài)性概念實(shí)例

  1. public class BaseClass  
  2. {  
  3. public void DoWork() { }  
  4. public int WorkField;  
  5. public int WorkProperty  
  6. {  
  7. get { return 0; }  
  8. }  
  9. }  
  10.  
  11. public class DerivedClass : BaseClass  
  12. {  
  13. public new void DoWork() { }  
  14. public new int WorkField;  
  15. public new int WorkProperty  
  16. {  
  17. get { return 0; }  
  18. }  
  19. }  

C#多態(tài)性實(shí)例中使用new關(guān)鍵字時(shí),調(diào)用的是新的類成員而不是已被替換的基類成員。這些基類成員稱為隱藏成員。如果將派生類的實(shí)例強(qiáng)制轉(zhuǎn)換為基類的實(shí)例,就仍然可以調(diào)用隱藏類成員。例如:

  1. DerivedClass B = new DerivedClass();  
  2. B.DoWork();// Calls the new method.  
  3.  
  4. BaseClass A = (BaseClass)B;  
  5. A.DoWork();// Calls the old method.  

為了使派生類的實(shí)例完全接替來自基類的類成員,基類必須將該成員聲明為虛擬的。這是通過在該成員的返回類型之前添加 virtual 關(guān)鍵字來實(shí)現(xiàn)的。然后,派生類可以選擇使用 override 關(guān)鍵字而不是 new,將基類實(shí)現(xiàn)替換為它自己的實(shí)現(xiàn)。例如:

  1. public class BaseClass  
  2. {  
  3. public virtual void DoWork() { }  
  4. public virtual int WorkProperty  
  5. {  
  6. get { return 0; }  
  7. }  
  8. }  
  9. public class DerivedClass : BaseClass  
  10. {  
  11. public override void DoWork() { }  
  12. public override int WorkProperty  
  13. {  
  14. get { return 0; }  
  15. }  

C#多態(tài)性概念中字段不能是虛擬的,只有方法、屬性、事件和索引器才可以是虛擬的。當(dāng)派生類重寫某個(gè)虛擬成員時(shí),即使該派生類的實(shí)例被當(dāng)作基類的實(shí)例訪問,也會(huì)調(diào)用該成員。例如:

  1. DerivedClass B = new DerivedClass();  
  2. B.DoWork();// Calls the new method.  
  3.  
  4. BaseClass A = (BaseClass)B;  
  5. A.DoWork();// Also calls the new method  

C#多態(tài)性的相關(guān)理解就向你介紹到這里,希望對(duì)你了解和學(xué)習(xí)C#多態(tài)性有所幫助。

【編輯推薦】

  1. 解析C#操作Excel時(shí)的報(bào)錯(cuò)處理
  2. C#打開Excel文檔的兩大方法解析
  3. C#Excel文本搜索應(yīng)用淺析
  4. C#創(chuàng)建Excel文件實(shí)例講解
  5. 淺析C#創(chuàng)建Excel文件實(shí)現(xiàn)的實(shí)際操作
責(zé)任編輯:仲衡 來源: zuoyefeng.com
相關(guān)推薦

2009-08-28 16:48:50

C#多態(tài)性

2009-09-01 15:08:18

C#多態(tài)性

2009-06-19 14:10:42

Java多態(tài)性

2010-02-01 14:07:12

C++多態(tài)性

2010-01-28 16:16:32

C++多態(tài)性

2011-07-11 16:35:28

Java

2011-07-11 16:45:25

JAVA多態(tài)性

2023-10-20 09:51:00

編程開發(fā)

2011-03-08 09:40:26

Java多態(tài)性

2009-11-23 19:33:12

PHP5多態(tài)性

2009-09-24 17:19:06

運(yùn)行時(shí)多態(tài)性

2011-06-08 13:50:39

C#類型轉(zhuǎn)換

2009-09-01 18:29:10

C#繼承C#多態(tài)

2009-08-25 17:46:31

C#多態(tài)

2020-09-26 21:44:57

If-Else代碼開發(fā)

2009-08-17 15:52:42

C#多態(tài)

2009-09-08 16:25:19

C#委托

2009-08-24 10:29:39

C# 泛型

2010-01-19 15:47:05

C++Test

2021-06-10 18:59:41

Java編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)