簡單介紹C#類的繼承的範例程式碼

來源:互聯網
上載者:User
本文主要介紹了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("現在開始播放 USB 磁碟機的視頻檔案......");    }  }  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。使用這個修飾符,只有本類的定義內部和它的衍生類別內部可以訪問它。為什麼要使用這個存取修飾詞呢?因為這個方法不是給類的外部使用的。也就是說,它沒有必要向使用者公開。但是它的繼承類又需要使用它,因此使用這個存取權限關鍵字可以保證一定程度的公開性,即定向公開,只為繼承類開放。這個方法的作用是具體設定執行個體欄位的值。讓執行個體欄位在類比播放 USB 磁碟機的內容時,電視機的頻道和音量能有一個特定值。除此之外,基類的其它方法沒 有改動。第 37 行代碼定義了一個子類,也就是衍生類別。它繼承基類的文法就是在類名後加一個冒號,然後接一 個基類的類名稱。第 38 行代碼定義了一個方法,在這個方法中調用了基類的 Set 方法,並且為基類的方法傳入了兩個參 數,這兩個參數確定了在播放 USB 磁碟機的內容時,電視機的頻道為 0,音量為 30。注意當調用 Set 方法的時候, 使用了 this 關鍵字,它表示這個方法就是執行個體自己的,因為它是從基類繼承下來的,相當於自己的財產。 然後又調用了基類的 Show 方法來再一次顯示頻道和音量的設定值。因此,類 TV 和類 NewTV 之間的關係可 以這麼描述,類 TV 可以看做是一種電視機的原型機,類 NewTV 可以看做在這種原型機的基礎上,電視機又 進行了升級,它添加了 USB 磁碟機播放的功能,而其它功能可以直接從原型機繼承,而不必再重新進行設計。第 46 行代碼定義了子類的執行個體,然後第 47 行、48 行和第 49 行直接調用了基類中定義的執行個體方法, 因為這些方法都已經繼承下來,完全屬於子類自己。第 50 行調用了子類定義的新添加的屬於自己的方法。這段代碼的執

行結果如下:

電視機型號是:39 英寸液晶 頻道:2音量:21 設定完畢電視機型號是:39 英寸液晶頻道:0 音量:30現在開始播放 USB 磁碟機的視頻檔案......
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.