本文主要介紹了C# 類別的繼承相關知識。具有很好的參考價值,下面跟著小編一起來看下吧
繼承
一個類別可以繼承自另一個類別。在 C#中,類別與類別之間只存在單一繼承。也就是說,一個類別的直接基底類別只能有一個。當類別與類別之間實作繼承的時候,子類別可以將它的直接基底類別的所有成員當做自己的成員,除了類別的靜態建構方法、實例建構方法和析構方法。但是,雖然基底類別的所有成員都可以當做子類別的成員,但是如果基底類別的成員設定了不同的存取權限,則衍生類別可以存取的成員也隨之不同。 C#的繼承是可以傳遞的,如果類別C從類別B派生,而類別B從類別A派生,則類別C將繼類別B的所有成員,也繼承類別A的所有成員(各個基底類別的靜態建構方法、實例建構方法及析構方法除外)。子類別(衍生類別)可以在繼承的 基礎上新增屬於自己的成員,但是它不能移除繼承來的父類別(基底類別)的成員。析構方法的作用是銷毀類別的實例,後續的文章我會總結說明。
下面看程式碼實例:
using System; namespace LycheeTest { public class TV { private int channel = 1; //电视机的频道 private int volume = 20; //电视机的音量 public static string model = "39 英寸液晶"; //型号 /// <summary> /// 具体设置电视机的频道和音量,因为只提供给子类使用 /// 所以用 protected 访问权限关键字修饰 /// </summary> /// <param name="ch">具体设置的频道数</param>/// <param name="vol">具体设置的音量值</param> protected void Set(int ch, int vol) { channel = ch; volume = vol; Console.WriteLine("设置完毕"); } /// <summary> /// 增加频道 /// </summary> public void ChPlus() { channel++; } /// <summary> /// 增加音量 /// </summary> public void VolPlus() { volume++; } /// <summary> /// 将信息显示在电视机屏幕上 /// </summary> public void Show() { Console.WriteLine("电视机型号是:{0}", model); Console.WriteLine("频道:{0}", channel); Console.WriteLine("音量:{0}", volume); } } public class NewTV: TV { public void PlayUDisk() { this.Set(0, 30); this.Show(); Console.WriteLine("现在开始播放 U 盘的视频文件......"); } } class Program { static void Main(string[] args) { NewTV myNewTV = new NewTV(); myNewTV.ChPlus(); myNewTV.VolPlus(); myNewTV.Show(); myNewTV.PlayUDisk(); Console.ReadKey(); } } }
上面這段程式碼中,第 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 盘的视频文件......
以上是簡單介紹C#類別的繼承的範例程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!