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

C#繼承知識詳解

開發 后端
本文向您介紹C#繼承方面的知識,包括初始化基類、重寫、方法重載等。C#的繼承與 C++ 等語言一個重要的不同,就是只能從一個類中繼承,這是開發者在權衡了從多個類C#繼承的優勢與劣勢作出的結果。

C#的繼承與 C++ 等語言一個重要的不同,就是只能從一個類中繼承,這是開發者在權衡了從多個類C#繼承的優勢與劣勢作出的結果。不過,可以從接口繼承。另外,繼承可傳遞。構造函數和析構函數不能被繼承。

初始化基類

可以在派生類構造函數中添加初始化基類的代碼。

  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.     }  

注意派生類構造函數中的 : base(index)。將先調用基類的構造函數。

另外,相對于 this,要訪問基類的成員,可以使用 base,當前這不能用在靜態方法中,因為靜態方法沒有實例。

C#繼承中的重寫

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

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

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

不能重寫非虛方法或靜態方法。重寫的基方法必須是 virtual、abstract 或 override 的。為什么 override 也可以重寫呢?因為基類中的 override 實際上是對基類的基類進行的重寫,由于繼承可傳遞,所以也可以對基類中 override 的方法進行重寫。

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

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

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

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

C#繼承中的方法重載

方法重載并不是類繼承中的內容,只是它容易和重寫等混淆,所以放在一起談談。

什么是重載呢,舉個例子,我們在應用 System.IO.File.Create() 方法時,往往可以選擇幾種參數,這是就方法的重載,同一個作用域、同一個方法名稱、具有不同的參數類型或參數個數,在調用方法時,根據參數自動決定使用哪一個方法。

示例

  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#中,方法參數沒有默認值,可通過重載來實現默認值功能。

 

【編輯推薦】

  1. 一個C#時間計算的實例
  2. C#日期格式化的幾種處理方法
  3. 代碼詳解C#比較時間的三種方法
  4. C#日期格式化的幾個要點
  5. C#時間的格式轉換的幾種方法
責任編輯:佚名 來源: 千一網絡
相關推薦

2009-09-24 15:20:54

C#接口定義

2009-08-24 10:31:37

C#接口繼承

2009-09-01 18:29:10

C#繼承C#多態

2025-02-07 08:47:38

C#派生類接口

2009-08-13 18:15:06

C#繼承構造函數

2009-06-16 10:20:05

多繼承C#

2010-02-01 16:13:15

C++繼承

2009-09-07 16:13:56

C# MessageB

2009-08-24 11:23:41

C# TimeLabe

2009-09-01 16:07:04

C#命名規約

2009-08-14 17:09:48

C#引用類型

2009-08-27 16:37:06

C#基礎知識

2009-08-21 08:41:44

C#反射

2009-08-28 10:22:47

C# DLLImpor

2009-09-04 17:34:11

C#CC++

2009-08-13 16:13:03

C#基礎知識

2009-08-13 12:50:45

C#基礎知識

2011-07-14 11:08:30

C#繼承

2009-09-07 05:24:22

C#窗體繼承

2009-08-25 18:04:30

C#實現Singlet
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: av一二三区 | 国精品一区二区 | 免费在线观看黄网站 | 精品免费国产一区二区三区四区 | 日韩视频1 | 2019天天干天天操 | 色综合天天天天做夜夜夜夜做 | 国产成人99久久亚洲综合精品 | h视频在线免费看 | 99热这里都是精品 | 中文字幕第5页 | 日韩av成人在线观看 | 激情六月丁香婷婷 | 亚洲一区二区高清 | 一区二区三区中文字幕 | 韩国av电影网 | 人人干人人干人人干 | 亚洲精品一区二区在线观看 | 国产精品污污视频 | 韩三级在线观看 | 黄色网址大全在线观看 | 午夜视频一区二区三区 | 在线免费小视频 | 成人视屏在线观看 | 91久久婷婷 | 亚洲91视频 | 久久这里有精品 | 99久久久久久久 | 亚洲欧美日韩精品久久亚洲区 | 亚洲国产中文字幕 | 欧美大片久久久 | 中国大陆高清aⅴ毛片 | 久久精品亚洲精品国产欧美kt∨ | 日本不卡免费新一二三区 | 麻豆精品一区二区三区在线观看 | av网站免费在线观看 | 天天操网 | 久久久久久久综合 | 久久99国产精品 | 天天躁日日躁xxxxaaaa | 精品一二区 |