Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode, der kurz die Vererbung von C#-Klassen vorstellt

Beispielcode, der kurz die Vererbung von C#-Klassen vorstellt

黄舟
黄舟Original
2017-03-28 11:21:301279Durchsuche

Dieser Artikel stellt hauptsächlich das Wissen im Zusammenhang mit der Vererbung der C#-Klasse vor. Es hat einen sehr guten Referenzwert. Schauen wir es uns mit dem Editor an.

Vererbung

Eine Klasse kann von einer anderen Klasse erben. In C# gibt es nur eine einzelne Vererbung zwischen Klassen. Mit anderen Worten: Eine Klasse kann nur eine direkte Basisklasse haben. Wenn die Vererbung zwischen Klassen implementiert wird, kann die Unterklasse alle Mitglieder ihrer direkten Basisklasse als ihre eigenen Mitglieder behandeln, mit Ausnahme der statischen -Konstruktormethoden und der Instanzkonstruktormethoden der Klasse und Destruktormethode. Obwohl jedoch alle Mitglieder der Basisklasse als Mitglieder der Unterklasse verwendet werden können, unterscheiden sich auch die Mitglieder, auf die die abgeleitete Klasse zugreifen kann, wenn die Mitglieder der Basisklasse über unterschiedliche Zugriffsberechtigungen verfügen. Die Vererbung in C# ist transitiv. Wenn Klasse C von Klasse B und Klasse B von Klasse A abgeleitet ist, erbt Klasse C alle Mitglieder von Klasse B und auch alle Mitglieder von Klasse A (statische Konstruktoren jeder Basisklasse). außer Instanzkonstruktionsmethoden und Destruktormethoden). Eine Unterklasse (abgeleitete Klasse) kann ihre eigenen Mitglieder auf der Grundlage der Vererbung hinzufügen, sie kann jedoch keine geerbten Mitglieder der übergeordneten Klasse (Basisklasse) entfernen. Die Funktion der Destruktormethode besteht darin, Instanzen der Klasse zu zerstören. Die Erklärung werde ich in den folgenden Artikeln zusammenfassen.

Sehen Sie sich das Codebeispiel unten an:

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();
    }
  }
}

Im obigen Code definiert die 3. Codezeile die Basisklasse TV. Seine statischen Felder und Instanzfelder verfügen über einen Initialisierer zum Initialisieren der Felder. Zeile 11 fügt eine Instanzmethode mit dem Zugriffsmodifikator protected hinzu. Mit diesem Modifikator kann nur innerhalb der Definition dieser Klasse und innerhalb ihrer abgeleiteten Klassen darauf zugegriffen werden. Warum diesen Zugriffsmodifikator verwenden? Da diese Methode nicht für die externe Verwendung der Klasse vorgesehen ist. Das heißt, es muss den Benutzern nicht zugänglich gemacht werden. Die geerbten Klassen müssen es jedoch verwenden. Daher kann die Verwendung dieses Zugriffsberechtigungsschlüsselworts ein gewisses Maß an Öffentlichkeit gewährleisten, dh eine gezielte Offenlegung, die nur geerbten Klassen offen steht. Der Zweck dieser Methode besteht darin, den Wert des Instanzfelds gezielt festzulegen. Lassen Sie das Instanzfeld einen bestimmten Wert für den Kanal und die Lautstärke des Fernsehers haben, wenn Sie den Inhalt des USB-Flash-Laufwerks simulieren. Ansonsten wurden die anderen Methoden der Basisklasse nicht verändert. Zeile 37 des Codes definiert eine Unterklasse, auch abgeleitete Klasse genannt. Die Syntax zum Erben von einer Basisklasse besteht darin, nach dem Klassennamen einen Doppelpunkt hinzuzufügen, gefolgt vom Klassennamen der Basisklasse. Zeile 38 des Codes definiert eine Methode, in der die Set-Methode der Basisklasse aufgerufen wird und zwei Parameter an die Basisklassenmethode übergeben werden. Diese beiden Parameter bestimmen den Inhalt des USB-Flash-Laufwerks Der Kanal ist 0 und die Lautstärke ist 30. Beachten Sie, dass beim Aufruf der Set-Methode das Schlüsselwort this verwendet wird, was angibt, dass diese Methode die eigene der Instanz ist, da sie von der Basisklasse geerbt wird und ihrer eigenen Eigenschaft entspricht. Anschließend wird die Show-Methode der Basisklasse aufgerufen, um die Kanal- und Lautstärkeeinstellungen erneut anzuzeigen. Daher kann die Beziehung zwischen TV-like und NewTV-like wie folgt beschrieben werden: TV-like kann als Prototyp eines Fernsehgeräts angesehen werden, und NewTV-like kann als aktualisiertes Fernsehgerät auf Basis dieses Prototyps angesehen werden fügt die Funktion der USB-Disk-Wiedergabe hinzu, und andere Funktionen können direkt vom Prototyp geerbt werden, ohne ihn neu entwerfen zu müssen. Zeile 46 des Codes definiert eine Instanz der Unterklasse, und dann rufen die Zeilen 47, 48 und 49 direkt die in der Basisklasse definierten Instanzmethoden auf, da diese Methoden geerbt wurden und vollständig zur Unterklasse selbst gehören. Zeile 50 ruft die neu hinzugefügte Methode auf, die von der Unterklasse definiert wird. Das Ausführungsergebnis dieses Codes

lautet wie folgt:

电视机型号是:39 英寸液晶 
频道:2
音量:21 设置完毕
电视机型号是:39 英寸液晶
频道:0 音量:30
现在开始播放 U 盘的视频文件......

Das obige ist der detaillierte Inhalt vonBeispielcode, der kurz die Vererbung von C#-Klassen vorstellt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn