Maison  >  Article  >  développement back-end  >  Exemple de code qui présente brièvement l'héritage des classes C#

Exemple de code qui présente brièvement l'héritage des classes C#

黄舟
黄舟original
2017-03-28 11:21:301281parcourir

Cet article présente principalement les connaissances liées à l'héritage de la classe C#. Il a une très bonne valeur de référence. Regardons-le avec l'éditeur

Héritage

Une classe peut hériter d'une autre classe. En C#, il n’existe qu’un seul héritage entre les classes. En d’autres termes, une classe ne peut avoir qu’une seule classe de base directe. Lorsque l'héritage est implémenté entre classes, la sous-classe peut traiter tous les membres de sa classe de base directe comme ses propres membres, à l'exception du constructeur statique et des méthodes de constructeur d'instance de la classe et méthode destructeur. Cependant, bien que tous les membres de la classe de base puissent être utilisés comme membres de la sous-classe, si les membres de la classe de base disposent d'autorisations d'accès différentes, les membres auxquels la classe dérivée peut accéder seront également différents. L'héritage en C# est transitif. Si la classe C est dérivée de la classe B et que la classe B est dérivée de la classe A, alors la classe C héritera de tous les membres de la classe B et héritera également de tous les membres de la classe A (constructeurs statiques de chaque classe de base, sauf les méthodes de construction d'instances et les méthodes de destructeurs). Une sous-classe (classe dérivée) peut ajouter ses propres membres sur la base de l'héritage, mais elle ne peut pas supprimer les membres hérités de la classe parent (classe de base). La fonction de la méthode destructeur est de détruire les instances de la classe. Je résumerai l'explication dans les articles suivants.

Regardez l'exemple de code ci-dessous :

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

Dans le code ci-dessus, la 3ème ligne de code définit la classe de base TV. Ses champs statiques et ses champs d'instance ont un initialiseur pour initialiser les champs. La ligne 11 ajoute une méthode d'instance avec le modificateur d'accès protégé. Grâce à ce modificateur, il n'est accessible que dans la définition de cette classe et dans ses classes dérivées. Pourquoi utiliser ce modificateur d'accès ? Parce que cette méthode n’est pas destinée à un usage externe de la classe. Autrement dit, il n’est pas nécessaire qu’il soit exposé aux utilisateurs. Mais ses classes héritées doivent l'utiliser, donc l'utilisation de ce mot-clé d'autorisation d'accès peut garantir un certain degré de publicité, c'est-à-dire une divulgation dirigée, ouverte uniquement aux classes héritées. Le but de cette méthode est de définir spécifiquement la valeur du champ d'instance. Laissez le champ d'instance avoir une valeur spécifique pour le canal et le volume du téléviseur lors de la simulation du contenu de la clé USB. En dehors de cela, les autres méthodes de la classe de base n'ont pas été modifiées. La ligne 37 du code définit une sous-classe, également appelée classe dérivée. La syntaxe pour hériter d'une classe de base consiste à ajouter deux points après le nom de la classe, puis à suivre le nom de la classe de base. La ligne 38 du code définit une méthode dans laquelle la méthode Set de la classe de base est appelée et deux paramètres sont transmis à la méthode de la classe de base. Ces deux paramètres déterminent le téléviseur lors de la lecture du contenu de la clé USB. le canal est 0 et le volume est 30. Notez que lors de l'appel de la méthode Set, le mot clé this est utilisé, ce qui indique que cette méthode est propre à l'instance, car elle est héritée de la classe de base et est équivalente à sa propre propriété. Ensuite, la méthode Show de la classe de base est appelée pour afficher à nouveau les paramètres de canal et de volume. Par conséquent, la relation entre le type TV et le type NewTV peut être décrite comme suit : le type TV peut être considéré comme un prototype de téléviseur, et le type NewTV peut être considéré comme un téléviseur amélioré basé sur ce prototype. ajoute la fonction de lecture de disque USB, et d'autres fonctions peuvent être héritées directement du prototype sans avoir à le reconcevoir. La ligne 46 du code définit une instance de la sous-classe, puis les lignes 47, 48 et 49 appellent directement les méthodes d'instance définies dans la classe de base, car ces méthodes ont été héritées et appartiennent entièrement à la sous-classe elle-même. La ligne 50 appelle la méthode nouvellement ajoutée définie par la sous-classe. Le résultat de l'exécution de ce code

est le suivant :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn