自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#繼承知識(shí)詳解

開發(fā) 后端
本文向您介紹C#繼承方面的知識(shí),包括初始化基類、重寫、方法重載等。C#的繼承與 C++ 等語言一個(gè)重要的不同,就是只能從一個(gè)類中繼承,這是開發(fā)者在權(quán)衡了從多個(gè)類C#繼承的優(yōu)勢(shì)與劣勢(shì)作出的結(jié)果。

C#的繼承與 C++ 等語言一個(gè)重要的不同,就是只能從一個(gè)類中繼承,這是開發(fā)者在權(quán)衡了從多個(gè)類C#繼承的優(yōu)勢(shì)與劣勢(shì)作出的結(jié)果。不過,可以從接口繼承。另外,繼承可傳遞。構(gòu)造函數(shù)和析構(gòu)函數(shù)不能被繼承。

初始化基類

可以在派生類構(gòu)造函數(shù)中添加初始化基類的代碼。

  1. public class BaseClass  
  2. {  
  3.     private int i = 0;  
  4.       
  5.     public BaseClass(int index)  
  6.     {  
  7.         i = index;  
  8.     }  
  9. }  
  10.  
  11.  
  12. public class DerivedClass : BaseClass  
  13. {  
  14.     private int j = 0;  
  15.       
  16.     public DerivedClass(int index) : base(index)  
  17.     {  
  18.         j = index;  
  19.     }  

注意派生類構(gòu)造函數(shù)中的 : base(index)。將先調(diào)用基類的構(gòu)造函數(shù)。

另外,相對(duì)于 this,要訪問基類的成員,可以使用 base,當(dāng)前這不能用在靜態(tài)方法中,因?yàn)殪o態(tài)方法沒有實(shí)例。

C#繼承中的重寫

◆virtual 用在基類中,指定一個(gè)虛方法(屬性),表示這個(gè)方法(屬性)可以重寫。

◆override 用在派生類中,表示對(duì)基類虛方法(屬性)的重寫。

以上的基類和派生類都是相對(duì)的。B 是 C 的基類,也可以是 A 的派生類,B 中既可以對(duì) A 中的 virtual 虛方法用 override 重寫,也可以指定 virtual 虛方法供 C 重寫。

不能重寫非虛方法或靜態(tài)方法。重寫的基方法必須是 virtual、abstract 或 override 的。為什么 override 也可以重寫呢?因?yàn)榛愔械?override 實(shí)際上是對(duì)基類的基類進(jìn)行的重寫,由于繼承可傳遞,所以也可以對(duì)基類中 override 的方法進(jìn)行重寫。

◆override 聲明不能更改 virtual 方法的可訪問性。override 方法和 virtual 方法必須具有相同的訪問級(jí)別修飾符。
不能使用修飾符 new、static、virtual 或 abstract 來修改 override 方法。

◆重寫屬性聲明必須指定與繼承屬性完全相同的訪問修飾符、類型和名稱,并且被重寫的屬性必須是 virtual、abstract 或 override 的。

  1. public class BaseClass  
  2. {  
  3.     public virtual string GetString()  
  4.     {  
  5.         return "這是一個(gè)虛方法。";  
  6.     }  
  7. }  
  8.  
  9.  
  10. public class DerivedClass : BaseClass  
  11. {  
  12.     public override string GetString()  
  13.     {  
  14.         return "這是重寫了的方法。";  
  15.     }  

可以看出,重寫與前面講的重載是有區(qū)別的。

C#繼承中的方法重載

方法重載并不是類繼承中的內(nèi)容,只是它容易和重寫等混淆,所以放在一起談?wù)劇?/P>

什么是重載呢,舉個(gè)例子,我們?cè)趹?yīng)用 System.IO.File.Create() 方法時(shí),往往可以選擇幾種參數(shù),這是就方法的重載,同一個(gè)作用域、同一個(gè)方法名稱、具有不同的參數(shù)類型或參數(shù)個(gè)數(shù),在調(diào)用方法時(shí),根據(jù)參數(shù)自動(dòng)決定使用哪一個(gè)方法。

示例

  1. public string GetString()  
  2. {  
  3.     //...  
  4. }  
  5.  
  6. public string GetString(int index)  
  7. {  
  8.     //...  
  9. }  
  10.  
  11. public string GetString(string userName)  
  12. {  
  13.     //...  
  14. }  

在C#中,方法參數(shù)沒有默認(rèn)值,可通過重載來實(shí)現(xiàn)默認(rèn)值功能。

 

【編輯推薦】

  1. 一個(gè)C#時(shí)間計(jì)算的實(shí)例
  2. C#日期格式化的幾種處理方法
  3. 代碼詳解C#比較時(shí)間的三種方法
  4. C#日期格式化的幾個(gè)要點(diǎn)
  5. C#時(shí)間的格式轉(zhuǎn)換的幾種方法
責(zé)任編輯:佚名 來源: 千一網(wǎng)絡(luò)
相關(guān)推薦

2009-09-24 15:20:54

C#接口定義

2009-08-24 10:31:37

C#接口繼承

2009-09-01 18:29:10

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

2025-02-07 08:47:38

C#派生類接口

2009-08-13 18:15:06

C#繼承構(gòu)造函數(shù)

2010-02-01 16:13:15

C++繼承

2009-06-16 10:20:05

多繼承C#

2009-08-14 17:09:48

C#引用類型

2009-08-24 11:23:41

C# TimeLabe

2009-09-01 16:07:04

C#命名規(guī)約

2009-09-07 16:13:56

C# MessageB

2009-08-13 12:50:45

C#基礎(chǔ)知識(shí)

2009-08-13 16:13:03

C#基礎(chǔ)知識(shí)

2009-08-21 08:41:44

C#反射

2009-08-27 16:37:06

C#基礎(chǔ)知識(shí)

2009-08-28 10:22:47

C# DLLImpor

2009-09-04 17:34:11

C#CC++

2011-07-14 11:08:30

C#繼承

2009-09-07 05:24:22

C#窗體繼承

2009-08-06 17:31:46

C#制作屏幕保護(hù)
點(diǎn)贊
收藏

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