C#中心根底--類的承繼。本站提示廣大學習愛好者:(C#中心根底--類的承繼)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中心根底--類的承繼正文
一個類可以承繼自另一個類。在 C#中,類與類之間只存在單一承繼。也就是說,一個類的直接基類只能有一個。當類與類之間完成承繼的時分,子類可以將它的直接基類的一切成員當做自己的成員,除了類的靜態結構辦法、實例結構辦法和析構辦法。但是,雖然基類的一切成員都可以當做子類的成員,但是假如基類的成員設置了不同的訪問權限,則派生類可以訪問的成員也隨之不同。C#的承繼是可以傳遞的,假如類C從類B派生,而類B從類A派生,則類C將繼類B的一切成員,也承繼類A的一切成員(各個基類的靜態結構辦法、實例結構辦法和析構辦法除外)。子類(派生類)可以在承繼的 根底上添加屬於自己的成員,但是它不能移除承繼來的父類(基類)的成員。析構辦法的作用是銷毀類的實例,後續的文章我會總結闡明。
上面看代碼實例:
1 using System; 2 namespace LycheeTest { 3 public class TV { 4 private int channel = 1; //電視機的頻道 5 private int volume = 20; //電視機的音量 6 public static string model = "39 英寸液晶"; //型號 7 /// <summary> 8 /// 詳細設置電視機的頻道和音量,由於只提供應子類運用 /// 所以用 protected 訪問權限關鍵字修飾 9 /// </summary> 10 /// <param name="ch">詳細設置的頻道數</param>/// <param name="vol">詳細設置的音量值</param> 11 protected void Set(int ch, int vol) { 12 channel = ch; 13 volume = vol; 14 Console.WriteLine("設置終了"); 15 } 16 /// <summary> 17 /// 添加頻道 18 /// </summary> 19 public void ChPlus() { 20 channel++; 21 } 22 /// <summary> 23 /// 添加音量 24 /// </summary> 25 public void VolPlus() { 26 volume++; 27 } 28 /// <summary> 29 /// 將信息顯示在電視機屏幕上 30 /// </summary> 31 public void Show() { 32 Console.WriteLine("電視機型號是:{0}", model); 33 Console.WriteLine("頻道:{0}", channel); 34 Console.WriteLine("音量:{0}", volume); 35 } 36 } 37 public class NewTV: TV { 38 public void PlayUDisk() { 39 this.Set(0, 30); 40 this.Show(); 41 Console.WriteLine("如今開端播放 U 盤的視頻文件......"); 42 } 43 } 44 class Program { 45 static void Main(string[] args) { 46 NewTV myNewTV = new NewTV(); 47 myNewTV.ChPlus(); 48 myNewTV.VolPlus(); 49 myNewTV.Show(); 50 myNewTV.PlayUDisk(); 51 Console.ReadKey(); 52 } 53 } 54 }
下面這段代碼中,第 3 行代碼定義了基類 TV。它的靜態字段和實例字段都有一個初始值設定項停止了字段的初始化。第 11 行代碼添加了一個實例辦法,它的訪問修飾符為 protected。運用這個修飾符,只要本類的定義外部和它的派生類外部可以訪問它。為什麼要運用這個訪問修飾符呢?由於這個辦法不是給類的內部運用的。也就是說,它沒有必要向用戶地下。但是它的承繼類又需求運用它,因而運用這個訪問權限關鍵字可以保證一定水平的地下性,即定向地下,只為承繼類開放。這個辦法的作用是詳細設置實例字段的值。讓實例字段在模仿播放 U 盤的內容時,電視機的頻道和音量能有一個特定值。除此之外,基類的其它辦法沒 有改動。第 37 行代碼定義了一個子類,也就是派生類。它承繼基類的語法就是在類名後加一個冒號,然後接一 個基類的類稱號。第 38 行代碼定義了一個辦法,在這個辦法中調用了基類的 Set 辦法,並且為基類的辦法傳入了兩個參 數,這兩個參數確定了在播放 U 盤的內容時,電視機的頻道為 0,音量為 30。留意當調用 Set 辦法的時分, 運用了 this 關鍵字,它表示這個辦法就是實例自己的,由於它是從基類承繼上去的,相當於自己的財富。 然後又調用了基類的 Show 辦法來再一次顯示頻道和音量的設置值。因而,類 TV 和類 NewTV 之間的關系可 以這麼描繪,類 TV 可以看做是一種電視機的原型機,類 NewTV 可以看做在這種原型機的根底上,電視機又 停止了晉級,它添加了 U 盤播放的功用,而其它功用可以直接從原型機承繼,而不用再重新停止設計。第 46 行代碼定義了子類的實例,然後第 47 行、48 行和第 49 行直接調用了基類中定義的實例辦法, 由於這些辦法都曾經承繼上去,完全屬於子類自己。第 50 行調用了子類定義的新添加的屬於自己的辦法。這段代碼的執行後果如下:
電視機型號是:39 英寸液晶 頻道:2 音量:21 設置終了 電視機型號是:39 英寸液晶 頻道:0 音量:30 如今開端播放 U 盤的視頻文件......
(明天先寫到這裡...後續補完)